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)
相关推荐
LuminousCPP18 小时前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
rannn_1116 天前
【力扣hot100】二叉树专题+总结
java·算法·leetcode·二叉树
伟大的车尔尼7 天前
分治题目:所有可能的真二叉树
二叉树·分治
神威难绷泪7 天前
数据结构:二叉树
数据结构·二叉树
伟大的车尔尼8 天前
分治题目:不同的二叉搜索树 II
二叉树·二叉搜索树·分治
Tyler_TXZ9 天前
C++C语言之——二叉树
c语言·开发语言·数据结构·c++·二叉树
love_muming15 天前
二叉树操作全解析:从递归到层序遍历
java·数据结构·算法·二叉树
-dzk-17 天前
【二叉树】LC 101.对称二叉树
算法·二叉树
bnmoel23 天前
数据结构深度剖析二叉树・下篇:链式结构的实现 ,遍历方法全解析
c语言·数据结构·算法·二叉树·
stolentime1 个月前
SP8549 MAIN75 - BST again题解
c++·算法·二叉树·深度优先·图论·记忆化搜索·组合数学