目录

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;
};
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
乔冠宇11 分钟前
leetcode每日一题——k-avoiding 数组的最小总和
数据结构·算法·leetcode
回村中年15 分钟前
rudux中间件
开发语言·javascript·中间件
沐墨专攻技术22 分钟前
深入理解指针(3)(C语言版)
c语言·数据结构·算法
Hali_Botebie22 分钟前
逻辑回归(Logistic Regression)模型的概率预测函数
算法·机器学习·逻辑回归
Repeat71524 分钟前
混境之地1
算法·蓝桥杯·bfs·dijkstra·三月末这么热正常吗?·摆烂的一天...回去睡觉!
jyyyx的算法博客29 分钟前
重复出现的数字
算法
小蜗笔记32 分钟前
关于matlab和python谁快的问题
python·算法·matlab
Heisenberg~39 分钟前
C++ 继承:面向对象编程的核心概念(二)
开发语言·javascript·c++
YJlio1 小时前
蓝桥杯算法实战分享
算法·职场和发展·蓝桥杯
前端Hardy1 小时前
HTML&CSS:超实用的登录页面(建议收藏)
javascript·css·html