因为二叉搜索树本身的中序排列是有序的,因此这里求取第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; } }