leetcode501-二叉搜索树中的众数

leetcode 501

思路

由于是二叉搜索树,那么我们知道它的特性:使用中序遍历得到的是从小到大排序的,所以我们利用这个规则,使用count来统计每次出现一个新的数的总个数,maxCount统计最大的个数值,result来存储二叉树中的众数,也就是要得到的结果值,pre用于统计前一个节点值

初始化定义好值以后,我们需要使用中序遍历,中间处理逻辑值

当pre还不存在的时候或者前一个节点跟后一个节点不相同时,说明出现了新的数字,要重新开始统计,更新count = 1, 更新节点为当前节点

如果数字相同的话,那么count++

然后比较maxCount和count的值,如果相等,说明当前值也是最大值,如果maxCount < count,那么说吗之前存在result中的数字都不是最大的数字,现在又出现了更大的数字,所以我们重新设置result为当前的数字

最终返回result

实现

js 复制代码
var findMode = function (root) {
    let count = 0, maxCount = 0;
    let result = [];
    let pre = null;
    const deep = (root) => {
        if(!root) return;
        // 左
        deep(root.left)
        // 中
        if(!pre || pre.val !== root.val){
            count = 1;
            pre = root;
        }else{
            count ++
        }
        if(maxCount === count){
            result.push(root.val)
        }else if(maxCount < count){
            maxCount = count
            result = [root.val]
        }
        // 右
        deep(root.right)
    }
    deep(root)
    return result;
};
相关推荐
拉不动的猪10 小时前
移动端调试工具VConsole初始化时的加载阻塞问题
前端·javascript·微信小程序
大金乄13 小时前
封装一个vue2的elementUI 表格组件(包含表格编辑以及多级表头)
前端·javascript
Lee川15 小时前
解锁 JavaScript 的灵魂:深入浅出原型与原型链
javascript·面试
swipe15 小时前
从原理到手写:彻底吃透 call / apply / bind 与 arguments 的底层逻辑
前端·javascript·面试
CoovallyAIHub16 小时前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub17 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub17 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub17 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub17 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github