501. 二叉搜索树中的众数

501. 二叉搜索树中的众数

python 复制代码
# 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 = 0
        self.maxCount = 0
        self.prev = None
        self.traverse(root)
        return self.mode 
    
    def traverse(self, root):
        if not root:
            return

        self.traverse(root.left)

        if not self.prev:
            self.curCount = 1
            self.maxCount = 1
            self.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.curCount
                    self.mode.append(root.val)

            if root.val != self.prev.val:
                # root.val 不重复的情况
                self.curCount = 1
                if self.curCount == self.maxCount:
                    self.mode.append(root.val)

        # 更新prev 
        self.prev = root
        self.traverse(root.right)
相关推荐
hope_wisdom9 天前
C/C++数据结构之树
数据结构·c++·二叉树·
Book思议-15 天前
【数据结构】「树」专题:树、森林与二叉树遍历之间的关系+408真题
数据结构·算法·二叉树··森林
月落归舟18 天前
帮你从算法的角度来认识二叉树---(二)
算法·二叉树
Book思议-19 天前
【数据结构】二叉树入门全解:从定义、性质到经典真题
数据结构·算法·二叉树
月落归舟19 天前
帮你从算法的角度来认识二叉树---(一)
数据结构·算法·二叉树
小碗羊肉21 天前
【数据结构】平衡二叉树的旋转机制
数据结构·二叉树
独断万古他化25 天前
【算法通关】二叉树中的深搜:DFS 递归解题套路
算法·二叉树·深度优先·dfs·递归
阿里嘎多哈基米1 个月前
速通Hot100-Day10——二叉树
算法·leetcode·二叉树·递归·平衡二叉树
阿里嘎多哈基米1 个月前
速通Hot100-Day09——二叉树
算法·leetcode·二叉树·hot100
Yvonne爱编码1 个月前
二叉树高频题精讲 | 从入门到熟练掌握二叉树操作
java·开发语言·数据结构·链表·二叉树