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 分钟前
Rust > 牛客OJ在线编程常见输入输出练习场
算法·rust
鹏多多1 分钟前
轻量+响应式!React瀑布流插件react-masonry-css的详细教程和案例
前端·javascript·react.js
忆湫淮2 分钟前
ENVI 5.6 利用现场标准校准板计算地表反射率具体步骤
大数据·人工智能·算法
Ayanami_Reii5 分钟前
基础数据结构应用-一个简单的整数问题
数据结构·算法·树状数组·fenwick tree
一颗宁檬不酸6 分钟前
Vue.js 初学者基础知识点总结 第一弹
前端·javascript·vue.js
xiaoxue..8 分钟前
解析 LocalStorage与事件委托在前端数据持久化中的应用
前端·javascript·面试
j***89468 分钟前
MySQL数据的增删改查(一)
android·javascript·mysql
Ayanami_Reii18 分钟前
进阶数据结构应用-一个简单的整数问题2(Fenwick-Tree 解法)
数据结构·算法·前缀和·差分·树状数组·fenwick tree
老黄编程19 分钟前
点云生成深度图的原理及算法步骤和参数详细说明
数学·算法·点云·深度图
@cc小鱼仔仔21 分钟前
vue 知识点
前端·javascript·vue.js