当前位置:网站首页>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;
}

边栏推荐
- 有什么类方法或是函数可以查看某个项目的Laravel版本的?
- Attack and defense world - PWN learning notes
- Customize the web service configuration file
- OSPF exercise Report
- Cryptography series: detailed explanation of online certificate status protocol OCSP
- The left-hand side of an assignment expression may not be an optional property access.ts(2779)
- MPLS experiment
- [statistical learning method] learning notes - support vector machine (Part 2)
- 【从 0 开始学微服务】【03】初探微服务架构
- 基于NeRF的三维内容生成
猜你喜欢

About sqli lab less-15 using or instead of and parsing

【PyTorch实战】用PyTorch实现基于神经网络的图像风格迁移

【统计学习方法】学习笔记——支持向量机(上)

BGP actual network configuration
![[statistical learning method] learning notes - logistic regression and maximum entropy model](/img/f7/857d053cc2cee81c24919aafab3c6e.png)
[statistical learning method] learning notes - logistic regression and maximum entropy model

Multi row and multi column flex layout

Cookie

Image pixel read / write operation

Charles: four ways to modify the input parameters or return results of the interface

基于NeRF的三维内容生成
随机推荐
对话PPIO联合创始人王闻宇:整合边缘算力资源,开拓更多音视频服务场景
SQL Lab (32~35) contains the principle understanding and precautions of wide byte injection (continuously updated later)
Master formula. (used to calculate the time complexity of recursion.)
ip2long与long2IP 分析
leetcode刷题:二叉树23(二叉搜索树中的众数)
SQL Lab (46~53) (continuous update later) order by injection
SQL Lab (41~45) (continuous update later)
有什么类方法或是函数可以查看某个项目的Laravel版本的?
Creation and assignment of graphic objects
【PyTorch实战】用RNN写诗
NPM instal reports agent or network problems
通讯协议设计与实现
利用棧來實現二進制轉化為十進制
OSPF exercise Report
Day-19 IO stream
opencv的四个函数
Static routing assignment of network reachable and telent connections
BGP actual network configuration
ip2long之后有什么好处?
2022 polymerization process test question simulation test question bank and online simulation test