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;
    }
};
相关推荐
阿Y加油吧13 小时前
算法二刷复盘|旋转排序数组二分双杀(LeetCode 33 & 153)
算法·leetcode·职场和发展
skywalker_1113 小时前
力扣hot100(9-找到字符串中所有字母异位词;10-和为K的子数组)
算法·leetcode·职场和发展
无敌昊哥战神13 小时前
【LeetCode 491】递增子序列:不能排序怎么去重?一文讲透“树层去重”魔法!
c语言·c++·python·算法·leetcode
阿Y加油吧13 小时前
算法二刷复盘|LeetCode 34&74 二分查找双杀(区间边界 + 二维矩阵)
算法·leetcode·矩阵
TSINGSEE13 小时前
零代码自动化AI算法训练革命:企业级私有化部署DLTM自动化AI训练服务器,告别算法依赖
人工智能·深度学习·算法·机器学习·自动化·ai大模型
Queenie_Charlie13 小时前
关于二叉树
数据结构·c++·二叉树
啊我不会诶13 小时前
【图论】基环树
算法·深度优先·图论
德卡先生的信箱13 小时前
算法部署(一)-模型压缩,剪枝,蒸馏的区别
算法·剪枝
WolfGang00732113 小时前
代码随想录算法训练营 Day44 | 图论 part02
算法·图论
王江奎13 小时前
Windows 跨平台 C/C++ 项目中的 UTF-8 路径陷阱
c++·windows·跨平台