Given the root of a binary search tree, and an integer k, return the kth smallest value (1-indexed) of all the values of the nodes in the tree.
def dfs(node):
if node가 null이라면:
return
dfs(node.left);
// 최솟값 갱신
dfs(node.right);
import java.util.*;
class Solution {
List<Integer> answer;
public void dfs(TreeNode now) {
answer.add(now.val);
if (now.left == null && now.right == null) {
return;
}
if (now.left != null) {
dfs(now.left);
}
if (now.right != null) {
dfs(now.right);
}
}
public int kthSmallest(TreeNode root, int k) {
answer = new ArrayList<>();
dfs(root);
Collections.sort(answer);
return answer.get(k - 1);
}
}
class Solution {
int K;
int cnt;
int kMin;
public void dfs(TreeNode now) {
if (now == null) {
return;
}
dfs(now.left);
cnt++;
if (cnt == K) {
kMin = now.val;
return;
}
dfs(now.right);
}
public int kthSmallest(TreeNode root, int k) {
K = k;
dfs(root);
return kMin;
}
}
정렬을 할 필요가 없어져 4ms -> 0ms로 줄어들었다.