当前位置: 首页 > article >正文

力扣 LeetCode 501. 二叉搜索树中的众数(Day10:二叉树)

解题思路:

中序遍历

很好的技巧

只需遍历一遍就可以获得结果,maxCount实时更新,找到更大的maxCount就会清空原有数组并添加当前元素

class Solution {
    List<Integer> list = new ArrayList<>();
    TreeNode pre = null;
    int cnt = 0;
    int maxCnt = 0;

    public int[] findMode(TreeNode root) {
        traversal(root);
        int[] res = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            res[i] = list.get(i);
        }
        return res;
    }

    public void traversal(TreeNode cur) {
        if (cur == null) return;

        traversal(cur.left);

        if (pre == null || pre.val != cur.val) cnt = 1;
        else if (pre.val == cur.val) cnt++;
        
        if (cnt > maxCnt) {
            maxCnt = cnt;
            list.clear();
            list.add(cur.val);
        } else if (cnt == maxCnt) {
            list.add(cur.val);
        }
        pre = cur;
        
        traversal(cur.right);
    }
}


http://www.kler.cn/a/406316.html

相关文章:

  • JDBC编程---Java
  • 网络编程(JAVA笔记第三十八期)
  • 对象:是什么,使用,遍历对象,内置对象
  • 0基础跟德姆(dom)一起学AI NLP自然语言处理01-自然语言处理入门
  • 菜鸟驿站二维码/一维码 取件识别功能
  • 远程管理不再难!树莓派5安装Raspberry Pi OS并实现使用VNC异地连接
  • 【vim】vim怎么从指定行到指定行的行首添加内容
  • 真题-桂城2018年六年级
  • OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)
  • HarmonyOS . 沉浸状态栏使用
  • Elasticsearch Windows版的安装及启动
  • 14:00面试,14:08就出来了,问的问题有点变态。。。
  • Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线
  • 基于干扰观测器的 PD 控制
  • 高性能存储SIG月度动态:重构和优化fuse,推动containerd社区支持erofs
  • 大模型基本能力评测---知识利用
  • Linux2.6内核进程调度队列
  • Windows 驱动开发中 ExAcquireResourceExclusiveLite 和其他锁的区别:
  • Windows中指定路径安装DockerDesktop
  • 死锁相关习题 10道 附详解
  • Day 18
  • 04高可用高并发(D1_高并发 - D1_缓存)
  • ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
  • 设计模式之 状态模式
  • WonderJourney 部署踩坑笔记 2024 ok
  • Java方法中的可变参数列表