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

边栏推荐
猜你喜欢

2022 polymerization process test question simulation test question bank and online simulation test

AirServer自动接收多画面投屏或者跨设备投屏

Attack and defense world ----- summary of web knowledge points

Pule frog small 5D movie equipment | 5D movie dynamic movie experience hall | VR scenic area cinema equipment

什么是ESP/MSR 分区,如何建立ESP/MSR 分区

leetcode刷题:二叉树25(二叉搜索树的最近公共祖先)
![[爬虫]使用selenium时,躲避脚本检测](/img/3a/85ea729be2aa76c3de4a822ca6939b.png)
[爬虫]使用selenium时,躲避脚本检测

HZOJ #240. 图形打印四

【统计学习方法】学习笔记——提升方法

Static comprehensive experiment
随机推荐
【PyTorch实战】用RNN写诗
Zhimei creative website exercise
Multi row and multi column flex layout
[statistical learning methods] learning notes - improvement methods
SQL Lab (32~35) contains the principle understanding and precautions of wide byte injection (continuously updated later)
Four functions of opencv
Using stack to convert binary to decimal
[pytorch practice] use pytorch to realize image style migration based on neural network
Simple implementation of call, bind and apply
数据库安全的重要性
BGP third experiment report
利用棧來實現二進制轉化為十進制
File upload vulnerability - upload labs (1~2)
Vxlan 静态集中网关
test
Static routing assignment of network reachable and telent connections
[疑难杂症]pip运行突然出现ModuleNotFoundError: No module named ‘pip‘
SQL injection -- Audit of PHP source code (take SQL lab 1~15 as an example) (super detailed)
[statistical learning method] learning notes - logistic regression and maximum entropy model
Day-16 set