当前位置:网站首页>Leetcode skimming: binary tree 23 (mode in binary search tree)
Leetcode skimming: binary tree 23 (mode in binary search tree)
2022-07-07 12:48:00 【Taotao can't learn English】
501. The mode in the binary search tree
Given a binary search tree with the same value (BST), find BST All the modes in ( The most frequent element ).
Assume BST It has the following definition :
- The value of the node contained in the left subtree of a node is less than or equal to the value of the current node
- The value of the node contained in the right subtree of a node is greater than or equal to the value of the current node
- Both the left and right subtrees are binary search trees
for example :
Given BST [1,null,2,2],
return [2].
Tips : If the mode exceeds 1 individual , There is no need to consider the output sequence
Advanced : Can you not use extra space ?( Suppose the overhead of implicit call stack generated by recursion is not counted )
Two ways of thinking :
1: General writing method , Hashtable , Traversing the tree , Save the result set to hashmap, Traversal frequency value Get the maximum , Iterate again to get the result set , Process into an array .
HashMap<Integer, Integer> result = new HashMap<Integer, Integer>();
public int[] findMode(TreeNode root) {
// This problem can be done with a hash table
traversal(root);
Set<Integer> keys = result.keySet();
int max = -1;
for (Integer key : keys) {
if (result.get(key) > max) {
max = result.get(key);
}
}
Set<Integer> resultSet = new HashSet<Integer>();
for (Integer key : keys) {
if (result.get(key) == max) {
resultSet.add(key);
}
}
int[] resultArr = new int[resultSet.size()];
int index = 0;
for (Integer key : resultSet) {
resultArr[index] = key;
index++;
}
return resultArr;
}
public void traversal(TreeNode root) {
if (root == null) {
return;
}
traversal(root.left);
if (result.containsKey(root.val)) {
result.put(root.val, result.get(root.val) + 1);
} else {
result.put(root.val, 1);
}
traversal(root.right);
}
2. Binary search tree writing : Because it's a binary search tree , The decreasing , So the same number must be together , Count the number of occurrences of each number , Give a maximum number of occurrences , If the number of occurrences of the current number is less than the maximum number , Do not change , If equal , Then add the current number to the result set , If it is greater than the maximum number of occurrences , Then empty the result set , The current number is added to the result set .
List<Integer> list = new ArrayList<>();
TreeNode parent;
int maxTimes = 0;
int curTimes = 0;
public void inorderTraversal(TreeNode root) {
if (root == null) {
return;
}
inorderTraversal(root.left);
if (root.val == parent.val) {
curTimes++;
// If the number of occurrences of the current element is greater than the maximum number , Then a new mode appears , The original is not the mode
if (curTimes > maxTimes) {
maxTimes = curTimes;
list.clear();
list.add(root.val);
} else if (curTimes == maxTimes) {
// If the number of occurrences of the current element is equal to the maximum number , Then a new mode appears
list.add(root.val);
}
} else {
curTimes = 1;
if (curTimes > maxTimes) {
maxTimes = curTimes;
list.clear();
list.add(root.val);
} else if (curTimes == maxTimes) {
// If the number of occurrences of the current element is equal to the maximum number , Then a new mode appears
list.add(root.val);
}
parent = root;
}
inorderTraversal(root.right);
}
public int[] findMode(TreeNode root) {
parent = root;
inorderTraversal(root);
int index = 0;
int[] resultArr = new int[list.size()];
for (Integer result : list) {
resultArr[index] = result;
index++;
}
return resultArr;
}
边栏推荐
- OSPF exercise Report
- 对话PPIO联合创始人王闻宇:整合边缘算力资源,开拓更多音视频服务场景
- 【从 0 开始学微服务】【00】课程概述
- Realize all, race, allsettled and any of the simple version of promise by yourself
- Connect to blog method, overload, recursion
- Vxlan 静态集中网关
- SQL Lab (46~53) (continuous update later) order by injection
- Utiliser la pile pour convertir le binaire en décimal
- [pytorch practice] image description -- let neural network read pictures and tell stories
- HZOJ #236. 递归实现组合型枚举
猜你喜欢
Minimalist movie website
File upload vulnerability - upload labs (1~2)
leetcode刷题:二叉树21(验证二叉搜索树)
How to apply @transactional transaction annotation to perfection?
聊聊Redis缓存4种集群方案、及优缺点对比
2022广东省安全员A证第三批(主要负责人)考试练习题及模拟考试
Polymorphism, final, etc
Ctfhub -web SSRF summary (excluding fastcgi and redI) super detailed
【统计学习方法】学习笔记——提升方法
JS to convert array to tree data
随机推荐
【深度学习】图像多标签分类任务,百度PaddleClas
普乐蛙小型5d电影设备|5d电影动感电影体验馆|VR景区影院设备
Pule frog small 5D movie equipment | 5D movie dynamic movie experience hall | VR scenic area cinema equipment
Attack and defense world ----- summary of web knowledge points
What if does not match your user account appears when submitting the code?
[statistical learning methods] learning notes - Chapter 5: Decision Tree
AirServer自动接收多画面投屏或者跨设备投屏
【从 0 开始学微服务】【00】课程概述
Static comprehensive experiment
NPM instal reports agent or network problems
[deep learning] image multi label classification task, Baidu paddleclas
HZOJ #235. 递归实现指数型枚举
Multi row and multi column flex layout
[pytorch practice] image description -- let neural network read pictures and tell stories
Polymorphism, final, etc
对话PPIO联合创始人王闻宇:整合边缘算力资源,开拓更多音视频服务场景
mysql怎么创建,删除,查看索引?
ICLR 2022 | pre training language model based on anti self attention mechanism
leetcode刷题:二叉树27(删除二叉搜索树中的节点)
Static routing assignment of network reachable and telent connections