😎풀이

  1. 깊이 우선 탐색
    1-2. 좌측 우선 탐색 (가장 좌측의 요소의 값이 가장 낮은 BST의 구조 활용) 최저점 접근
    1-3. 순차적으로 카운트하며 k번째 요소 탐색
    1-4. 우측 노드 탐색
  2. k번째 노드 값 반환
function kthSmallest(root: TreeNode | null, k: number): number {
    if(!root) return null
    let count = 0
    let result = null
    // 깊이 우선 탐색
    function dfs(node: TreeNode | null) {
        if(result) return
        // 가장 낮은 노드 우선 탐색
        if(node.left) dfs(node.left)
        // N 번째 카운트
        count++
        // 목표와 같다면 정답 설정
        if(count === k) result = node.val
        if(node.right) dfs(node.right)
    }
    dfs(root)
    return result
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글