LeetCode501:二叉搜索树中的众数

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。

如果树中有不止一个众数,可以按 任意顺序 返回。

假定 BST 满足如下定义:

结点左子树中所含节点的值 小于等于 当前节点的值

结点右子树中所含节点的值 大于等于 当前节点的值

左子树和右子树都是二叉搜索树

代码

cpp 复制代码
class Solution {
public:

    int count=0, maxCount=0;
    TreeNode* pre=nullptr;
    vector<int> res;
 
    void traversal(TreeNode* node) {
        if (node == nullptr) return;
        
        traversal(node->left);

        if (pre == nullptr) count = 1;
        else if (pre->val == node->val) ++count;
        else count = 1;
        pre = node;
    
        if (count == maxCount) {
            res.push_back(node->val);
        }
        //如果res中没有元素或者已存在相同的元素,就不用在重复clear和push_back。
        else if (count > maxCount) {
            maxCount = count;
            res = { node->val };
        }

        traversal(node->right);
    }
    vector<int> findMode(TreeNode* root) {
        traversal(root);
        return res;
    }
};
相关推荐
tobias.b几秒前
深度学习 超清晰通俗讲解 + 核心算法 + 使用场景
人工智能·深度学习·算法
Trouvaille ~1 分钟前
【项目篇】从零手写高并发服务器(九):HTTP协议支持——从TCP到应用层
linux·服务器·c++·tcp/ip·http·高并发·应用层
七夜zippoe2 分钟前
量子计算入门:Qiskit框架实战
python·算法·量子计算·ibm·qiskit
小此方2 分钟前
Re:从零开始的 C++ STL篇(八)深度解构AVL树自平衡机制:平衡维护与旋转调整背后的严密逻辑
开发语言·数据结构·c++·算法·stl
2301_789015622 分钟前
封装哈希表实现unordered_set/undered_map
c语言·数据结构·c++·算法·哈希算法
落羽的落羽4 分钟前
【Linux系统】中断机制、用户态与内核态、虚拟地址与页表的本质
java·linux·服务器·c++·人工智能·算法·机器学习
bksczm4 分钟前
C++ iostream , sstream的基本理解
开发语言·c++
神工坊5 分钟前
技术分享︱多重参考系模型在风扇通风仿真中的自动化实现:精度与效率的工程平衡
算法·hpc·并行计算·cfd·cae·流体力学·风扇仿真
独断万古他化6 分钟前
【算法通关】递归:汉诺塔、合并链表、反转链表、两两交换、快速幂全解
数据结构·算法·链表·递归
前端摸鱼匠8 小时前
【AI大模型春招面试题11】什么是模型的“涌现能力”(Emergent Ability)?出现条件是什么?
人工智能·算法·ai·自然语言处理·面试·职场和发展