题目链接
法一(中序遍历)
private void dfs(TreeNode root, Stack<Integer> stack, int k) {
if (root == null) {
return;
}
dfs(root.left, stack, k);
if (stack.size() == k) {
return;
}
stack.push(root.val);
dfs(root.right, stack, k);
}
public int kthSmallest(TreeNode root, int k) {
Stack<Integer> stack = new Stack<>();
dfs(root, stack, k);
return stack.peek();
}
本地测试
lay.showTitle(230);
Solution230 sol230 = new Solution230();
List<Integer> arr230 = Arrays.asList(5, 3, 6, 2, 4, null, null, 1);
TreeNode root230 = treeOpt.createTreeByLayerOrder(arr230);
treeOpt.layerOrder(root230);
System.out.println(sol230.kthSmallest(root230, 3));