27_二叉搜索树的众数

简介: 27_二叉搜索树的众数

201.二叉搜索树中的众数

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。

如果树中有不止一个众数,可以按 任意顺序 返回。

假定 BST 满足如下定义:

  • 结点左子树中所含节点的值 小于等于 当前节点的值
  • 结点右子树中所含节点的值 大于等于 当前节点的值
  • 左子树和右子树都是二叉搜索树

示例 1:

输入:root = [1,null,2,2]
输出:[2]

示例 2:

输入:root = [0]
输出:[0]
class Solution {
    private int count = 0;//当前节点的频次
    private int maxCount = 0;//二叉树的整个节点的频次
    List<Integer> result;
    TreeNode pre = null;
    public int[] findMode(TreeNode root) {
        findMode1(root);
        int[] res = new int[result.size()];
        for (int i = 0; i < result.size(); i++) {
            res[i] = result.get(i);
        }
        return res;
    }
    //中序遍历(左-中-右)
    public void findMode1(TreeNode cur) {
        if (cur == null) {
            return;
        }
        findMode1(cur.left);
        if (pre == null) {
            count = 1;
        } else if (pre.val == cur.val) {
            count++;
        } else {
            count = 1;
        }
        pre = cur;
        if (count == maxCount) {
            result.add(cur.val);
        }
        if (count > maxCount) {
            maxCount = count;
            result.clear();//更新结果集
            result.add(cur.val);
        }
        findMode1(cur.right);
    }
}
相关文章
Leetcode.965 单值二叉树
Leetcode.965 单值二叉树
26 0
代码随想录Day17 LeetCode T98 验证二叉搜索树 T530 二叉搜索树的最小绝对差 T501 二叉搜索树中的众数 T236二叉搜索树的最近公共祖先
代码随想录Day17 LeetCode T98 验证二叉搜索树 T530 二叉搜索树的最小绝对差 T501 二叉搜索树中的众数 T236二叉搜索树的最近公共祖先
55 0
|
1月前
【LeetCode 42】501.二叉搜索树中的众数
【LeetCode 42】501.二叉搜索树中的众数
8 0
|
6月前
|
存储
leetcode530二叉搜索树的最小绝对差刷题打卡
leetcode530二叉搜索树的最小绝对差刷题打卡
41 1
|
6月前
|
Java C++ Python
leetcode-501:二叉搜索树中的众数
leetcode-501:二叉搜索树中的众数
36 0
|
6月前
leetcode501二叉搜索树中的众数刷题打卡
leetcode501二叉搜索树中的众数刷题打卡
25 0
|
算法 编译器
LeetCode4-寻找两个有序数组的中位数
LeetCode4-寻找两个有序数组的中位数
二分搜索树
大家好,我是王有志。我们已经通过两篇文章认识了一棵树,今天我们学习二叉树中最简单的应用--二分搜索树。
59 0
二分搜索树
|
算法 Java C语言
平衡二分搜索树
大家好,我是王有志。今天我们一起学习更“高级”的二分搜索树--平衡二分搜索树。通过平衡二分搜索树,我们来认识第一个自平衡二分搜索树--AVL树。
74 0
平衡二分搜索树
|
Java
寻找两个有序数组的中位数
寻找两个有序数组的中位数
102 0