https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst
思路:因为二叉搜索树的特性,我们很容易的就可以发现当以中序遍历二叉搜索树时得到的就是一个升序队列,我们要找第k小的元素,只需要中序遍历到第k个元素即可。
进阶:关于这题的进阶思考我的想法是维护一个升序队列,二叉树改变时我们同样对这个队列做出修改,这样我们还可以借助队列返回。
class Solution {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public int kthSmallest(TreeNode root, int k) {
ArrayList<Integer> list = new ArrayList<>();
midOrder(root, list);
return list.get(k - 1);
}
public void midOrder(TreeNode root, ArrayList<Integer> list) {
if(root == null) {
return;
}
midOrder(root.left, list);
list.add(root.val);
midOrder(root.right, list);
}
}

被折叠的 条评论
为什么被折叠?



