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;
};
相关推荐
2601_961875245 分钟前
法考资料2026|全套|资料已整理
数据结构·算法·链表·贪心算法·eclipse·线性回归·动态规划
无限码力9 分钟前
美团研发岗 4月18号笔试真题 - 坐标
算法·美团笔试真题·美团笔试题·美团研发岗笔试题·美团研发岗4月18号真题
小二·36 分钟前
Next.js 15 全栈开发实战
开发语言·javascript·ecmascript
有点。1 小时前
C++倍增法(练习题)
c++·算法
Rain5092 小时前
2.1 Nest.js 项目初始化与模块化架构
开发语言·前端·javascript·后端·架构·数据分析·node.js
智者知已应修善业2 小时前
【51单片机8位数码管同时倒计时从9999】2024-1-25
c++·经验分享·笔记·算法·51单片机
洛水水2 小时前
【力扣100题】86.柱状图中最大的矩形
算法·leetcode·职场和发展
渡之2 小时前
GRiM-Net 深度解析 | 无人机 GNSS 拒止场景下两阶段跨视角视觉定位框架
深度学习·算法·动态规划·无人机
测试仪器廖生135902563852 小时前
罗德与施瓦茨 FSP13频谱分析仪FSP30
网络·人工智能·算法
happymaker06263 小时前
LeetCodeHot100——560.和为K的子数组
算法