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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!