501. 二叉搜索树中的众数

Posted hequnwang10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了501. 二叉搜索树中的众数相关的知识,希望对你有一定的参考价值。

一、题目描述

二、解题

中序遍历

这题先使用中序遍历,将数据变成有序的,然后查找众数,这题的区别众数可以是多个,与之前的169题不一样的是这个题的众数的数量是大于N/2的,可以使用摩尔投票法。所以这题也提供了一个思路如何在数组中查找众数。


class Solution 
    List<Integer> answer = new ArrayList<Integer>();
    int base, count, maxCount;
    public int[] findMode(TreeNode root) 
       //这里不需要使用哈希表 很占空间
       dfs(root);
       //对一个列表进行查找,找一个众数
       int[] res = new int[answer.size()];
       for(int i = 0;i<answer.size();i++)
           res[i] = answer.get(i);
       
       return res;
    
    // 中序遍历
     public void dfs(TreeNode root) 
        if (root == null) 
            return;
        
        dfs(root.left);
        update(root.val);
        dfs(root.right);
    
    //更新数据
    public void update(int x) 
        if (x == base) 
            ++count;
         else 
            count = 1;
            base = x;
        
        if (count == maxCount) 
            answer.add(base);
        
        if (count > maxCount) 
            maxCount = count;
            answer.clear();
            answer.add(base);
        
    

以上是关于501. 二叉搜索树中的众数的主要内容,如果未能解决你的问题,请参考以下文章

501. 二叉搜索树中的众数

501. 二叉搜索树中的众数

501. 二叉搜索树中的众数

二叉树二叉搜索树中的众数(leetcode501)

二叉树二叉搜索树中的众数(leetcode501)

⭐算法入门⭐《二叉树 - 二叉搜索树》中等07 —— LeetCode 501. 二叉搜索树中的众数