Problem
주어진 이진 탐색 트리에서 k
번째로 큰 수를 구하는 문제입니다.
Solution
이진 탐색 트리기 때문에 중위 순회 (Inorder) 를 사용하면 답을 구할 수 있습니다.
순서대로 순회하면서 k
번째 값을 저장하면 됩니다.
Iterative 로 구하려면 Stack
을 사용하면 됩니다.
Java Code
class Solution {
int rank = 1;
int res = -1;
public int kthSmallest(TreeNode root, int k) {
traverse(root, k);
return res;
}
public void traverse(TreeNode node, int k) {
if (node == null) return;
traverse(node.left, k);
if (rank++ == k) res = node.val;
traverse(node.right, k);
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Medium] Rotate Image (Java) (0) | 2021.01.01 |
---|---|
[LeetCode Medium] Product of Array Except Self (Java) (0) | 2020.12.31 |
[LeetCode Medium] Find First and Last Position of Element in Sorted Array (Java) (0) | 2020.12.31 |
[LeetCode Medium] Find All Anagrams in a String (Java) (0) | 2020.12.31 |
[LeetCode Hard] Jump Game II (Java) (1) | 2020.12.31 |