230. kth smallest element in a bst

230. Kth Smallest Element in a BST

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public int kthSmallest(TreeNode root, int k) {
int cnt = vis(root.left);
if(k == cnt+1){
return root.val;
}else if(k < cnt+1){
从左子树找
return kthSmallest(root.left, k);
}else{
//从右子树找
return kthSmallest(root.right, k - cnt - 1);
}
}
//计算节点个数
public int vis(TreeNode root) {
if (root == null) {
return 0;
}
return vis(root.left) + vis(root.right) + 1;
}