
😎풀이
result
: 최빈값이 담길 배열
curMaxFrequent
: 현재 최대 빈도 수
frequent
: 현재 노드 값의 빈도 수가 저장될 Map
- 깊이 우선 탐색(
dfs
)을 진행하며 모든 노드의 빈도 확인
- 최대 빈도의 노드들을
result
에 추가
result
반환
function findMode(root: TreeNode | null): number[] {
let result = []
let curMaxFrequent = 0
const frequent = new Map<number, number>()
function dfs(node: TreeNode | null) {
if(!node) return
frequent.set(node.val, (frequent.get(node.val) ?? 0) + 1)
dfs(node.left)
dfs(node.right)
}
dfs(root)
for(const [key, value] of frequent) {
if(value > curMaxFrequent) {
result = [key]
curMaxFrequent = value
} else if(value === curMaxFrequent) result.push(key)
}
return result
};