😎풀이

  1. result: 최빈값이 담길 배열
  2. curMaxFrequent: 현재 최대 빈도 수
  3. frequent: 현재 노드 값의 빈도 수가 저장될 Map
  4. 깊이 우선 탐색(dfs)을 진행하며 모든 노드의 빈도 확인
  5. 최대 빈도의 노드들을 result에 추가
  6. 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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글