题目:
因为二叉搜索树本身的中序排列是有序的,因此这里求取第k个最小值,可以极大复用该能力。
代码:
class Solution {
public int kthSmallest(TreeNode root, int k) {
return kthSmallestDg(root, k);
}
int i = 0;
public int kthSmallestDg(TreeNode root, int k) {
if (root == null) {
return -1;
}
int i = kthSmallestDg(root.left, k);
if (i != -1) {
return i;
}
this.i++;
if (this.i == k) {
return root.val;
}
int i1 = kthSmallestDg(root.right, k);
if (i1 != -1) {
return i1;
}
return -1;
}
}