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 小时前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
kyriewen3 小时前
半夜三点线上崩了,AI替我背了锅——用AI排错,五分钟定位三年老bug
前端·javascript·ai编程
Dlrb12113 小时前
C语言-指针数组与数组指针
c语言·数据结构·算法·指针·数组指针·指针数组·二级指针
WL_Aurora3 小时前
Python 算法基础篇之集合
python·算法
平行侠3 小时前
A15 工业路由器IP前缀高速检索与内存压缩系统
网络·tcp/ip·算法
阿旭超级学得完4 小时前
C++11包装器(function和bind)
java·开发语言·c++·算法·哈希算法·散列表
li星野4 小时前
位运算 & 数学 & 高频进阶九题通关(Python + C++)
c++·python·学习·算法
AI_paid_community5 小时前
98.5k Star!GitHub官方开源的这个工具,正在把"vibe coding"扫进历史的垃圾桶
javascript·claude
jerryinwuhan5 小时前
hello算法,简单讲(1)
算法·排序算法