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);
    }
}
相关文章
|
7月前
|
算法 C语言
分治法——找众数
分治法——找众数
|
2月前
【LeetCode 42】501.二叉搜索树中的众数
【LeetCode 42】501.二叉搜索树中的众数
10 0
|
6月前
|
算法
二叉搜索树,穷举(全排列)
二叉搜索树,穷举(全排列)
|
7月前
|
Java C++ Python
leetcode-501:二叉搜索树中的众数
leetcode-501:二叉搜索树中的众数
38 0
|
算法 编译器
LeetCode4-寻找两个有序数组的中位数
LeetCode4-寻找两个有序数组的中位数
二分搜索树
大家好,我是王有志。我们已经通过两篇文章认识了一棵树,今天我们学习二叉树中最简单的应用--二分搜索树。
61 0
二分搜索树
|
算法 C语言 C++
【双指针问题】977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
56 0
|
Java
寻找两个有序数组的中位数
寻找两个有序数组的中位数
107 0
|
算法 API
leetcode:4.寻找两个有序数组的中位数
题目比较好理解,如果只看最后结果的话,很容易想到把两个数组合并,并且排序后就可以轻松的找到中位数,但这样不符合题目的意思
90 0
|
人工智能 算法
有序数组的平方
有序数组的平方