501. 二叉搜索树中的众数
501. 二叉搜索树中的众数
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def findMode(self, root: Optional[TreeNode]) -> List[int]:self.mode = []self.curCount = 0self.maxCount = 0self.prev = Noneself.traverse(root)return self.mode def traverse(self, root):if not root:returnself.traverse(root.left)if not self.prev:self.curCount = 1self.maxCount = 1self.mode.append(root.val)else:if root.val == self.prev.val:self.curCount += 1# root.val 是众数if self.curCount == self.maxCount:self.mode.append(root.val)elif self.curCount > self.maxCount:# 更新众数self.mode.clear()self.maxCount = self.curCountself.mode.append(root.val)if root.val != self.prev.val:# root.val 不重复的情况self.curCount = 1if self.curCount == self.maxCount:self.mode.append(root.val)# 更新prev self.prev = rootself.traverse(root.right)