902. BST中第K小的元素
给一棵二叉搜索树,写一个
KthSmallest
函数来找到其中第 K 小的元素。
样例
样例 1:
输入:{1,#,2},2
输出:2
解释:
1
\
2
第二小的元素是2。
样例 2:
输入:{2,1,3},1
输出:1
解释:
2
/ \
1 3
第一小的元素是1。
挑战
如果这棵 BST 经常会被修改(插入/删除操作)并且你需要很快速的找到第 K 小的元素呢?你会如何优化这个 KthSmallest 函数?
注意事项
你可以假设 k 总是有效的,
1 ≤ k ≤ 树的总节点数
。
public int kthSmallest(TreeNode root, int k) {
// write your code here
helper(root, k);
return ret;
}
int i=0,ret=0;
public void helper(TreeNode root, int k) {
// write your code here
if (root==null){
return;
}
helper( root.left, k);
i++;
if (i==k){
ret=root.val;
return;
}
helper( root.right, k);
}