[ LeetCode | Java ] 230. Kth Smallest Element in a BST

dokim·2023년 9월 10일
post-thumbnail

🏷️230. Kth Smallest Element in a BST


1. 문제 설명

  • 트리의 루트와 정수 k가 주어졌을 때, 트리의 모든 노드 값 중에서 k번째로 작은 값을 (1부터 인덱스화하여) 반환합니다.


2. 접근 방법

  • 이전 문제 530. Minimum Absolute Difference in BST
    와 비슷하여 금방 풀 수 있었습니다.
  • 이진 검색 트리에서 DFS 중위 탐색을 하면 오름차순 순으로 값을 조회하게 됩니다.
  • 이 방법을 사용하여 이진 트리를 k만큼 카운트 하며 탐색하고 k번째 값을 반환할 변수 result에 저장합니다.
  • 이진 트리 탐색 후 얻은 결과값은 반환하면 원하는 결과값을 얻을 수 있습니다.

3. 구현 코드

class Solution {
    
    int count = 0;
    int kk, result;
    
    public int kthSmallest(TreeNode root, int k) {
        kk = k;
        inoderDfs(root);
        return result;
    }

    public void inoderDfs(TreeNode node){

        if(node != null){
            inoderDfs(node.left);
            count++;
            if(count == kk)
                result = node.val;
            else
                inoderDfs(node.right);
        }
    }
}
  • 시간 복잡도 : O(n)
  • 공간 복잡도 : O(log n)

5. 최종 회고

  • 이전 문제와 비슷하여 다시 연습하는 느낌으로 풀었습니다. 간단하게 풀리어 다른 문제점을 만나지 못하여 아쉬웠지만 코드 효율도 괜찮은 것 같아 만족합니다.

0개의 댓글