File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
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
+ ```
You can’t perform that action at this time.
0 commit comments