501. Find Mode in Binary Search Tree

Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred element) in the given BST.

Assume a BST is defined as follows:

  • The left subtree of a node contains only nodes with keys less than or equal to the node's key.
  • The right subtree of a node contains only nodes with keys greater than or equal to the node's key.
  • Both the left and right subtrees must also be binary search trees.

For example:
Given BST [1,null,2,2],

   1
    \
     2
    /
   2

return [2].

Note: If a tree has more than one mode, you can return them in any order.

Follow up: Could you do that without using any extra space? (Assume that the implicit stack space incurred due to recursion does not count).

题目含义:给一个二叉搜索树,求出现次数最多的数是哪个(哪些)

复制代码
 1     private int maxMode = Integer.MIN_VALUE;
 2     private void readNodeValue(TreeNode root,Map<Integer,Integer> valueMap)
 3     {
 4         if (root == null) return;
 5         valueMap.put(root.val,valueMap.getOrDefault(root.val,0)+1);
 6         maxMode = Math.max(maxMode,valueMap.get(root.val));
 7         readNodeValue(root.left,valueMap);
 8         readNodeValue(root.right,valueMap);
 9     }
10     
11     
12     public int[] findMode(TreeNode root) {
13       Map<Integer,Integer> valueMap = new HashMap<>();
14         readNodeValue(root,valueMap);
15         List<Integer> temp = new ArrayList<>();
16         for (Map.Entry<Integer,Integer> entry:valueMap.entrySet())
17         {
18             if (entry.getValue() == maxMode)
19             {
20                 temp.add(entry.getKey());
21             }
22         }
23         int[] modes = new int[temp.size()];
24        for (int i=0;i<modes.length;i++)
25        {
26            modes[i] = temp.get(i);
27        }
28         return modes;        
29     }
复制代码

 

posted @   daniel456  阅读(127)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示