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;
};
相关推荐
飞川撸码1 小时前
【LeetCode 热题100】网格路径类 DP 系列题:不同路径 & 最小路径和(力扣62 / 64 )(Go语言版)
算法·leetcode·golang·动态规划
Neil今天也要学习1 小时前
永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
单片机·嵌入式硬件·算法
yzx9910132 小时前
基于 Q-Learning 算法和 CNN 的强化学习实现方案
人工智能·算法·cnn
亮亮爱刷题2 小时前
算法练习-回溯
算法
眼镜哥(with glasses)3 小时前
蓝桥杯 国赛2024python(b组)题目(1-3)
数据结构·算法·蓝桥杯
kite01215 小时前
浏览器工作原理06 [#]渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
javascript·css·html
крон5 小时前
【Auto.js例程】华为备忘录导出到其他手机
开发语言·javascript·智能手机
coding随想7 小时前
JavaScript ES6 解构:优雅提取数据的艺术
前端·javascript·es6
年老体衰按不动键盘7 小时前
快速部署和启动Vue3项目
java·javascript·vue
灵感__idea7 小时前
JavaScript高级程序设计(第5版):无处不在的集合
前端·javascript·程序员