Skip to content

Commit 75a52a7

Browse files
authored
feat: create 501. 二叉搜索树中的众数.md (#586)
1 parent d2069be commit 75a52a7

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

501. 二叉搜索树中的众数.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
# [501. 二叉搜索树中的众数](https://leetcode.cn/problems/find-mode-in-binary-search-tree/)
3+
4+
- 队列 + 哈希表
5+
6+
```
7+
/**
8+
* Definition for a binary tree node.
9+
* class TreeNode {
10+
* val: number
11+
* left: TreeNode | null
12+
* right: TreeNode | null
13+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
14+
* this.val = (val===undefined ? 0 : val)
15+
* this.left = (left===undefined ? null : left)
16+
* this.right = (right===undefined ? null : right)
17+
* }
18+
* }
19+
*/
20+
21+
function findMode(root: TreeNode | null): number[] {
22+
const queue: TreeNode[] = [root];
23+
const frequencyMap: Map<number, number> = new Map<number, number>();
24+
let maxFrequency: number = 0;
25+
26+
while(queue.length) {
27+
// 访问节点
28+
const current = queue.pop();
29+
// 记录频率
30+
frequencyMap.set(current.val, (frequencyMap.get(current.val) ?? 0) + 1);
31+
// 统计最大值
32+
maxFrequency = Math.max(maxFrequency, frequencyMap.get(current.val));
33+
34+
current.left && queue.push(current.left);
35+
current.right && queue.push(current.right);
36+
}
37+
38+
return [...frequencyMap.keys()].reduce((results, key) => {
39+
if(frequencyMap.get(key) === maxFrequency) {
40+
results.push(key);
41+
}
42+
return results;
43+
}, [])
44+
};
45+
```

0 commit comments

Comments
 (0)