给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
递归实现:
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
private int count = 0;
private TreeNode res = null;
TreeNode KthNode(TreeNode pRoot, int k){
help(pRoot, k);
return res;
}
void help(TreeNode root, int k){
if(root == null) return;
help(root.left, k);
count++;
if(count == k){
res = root;
return;
}
if(count > k){
return;
}else{
help(root.right, k);
}
}
}
时间复杂度:O(N)
空间复杂度:O(N)