通过右节点->根节点->左节点的顺序即可将二叉搜索树从大到小输出。可以通过一个计数器k进行计数当k为1时就到达了目标值。
class Solution {
private int k;
public int kthLargest(TreeNode root, int k) {
if(root == null) return 0;
this.k = k;
return kthLargestCore(root);
}
private Integer kthLargestCore(TreeNode root) {
Integer target = null;
if(root.right != null)
target = kthLargestCore(root.right);
if (target == null) {
if (k == 1){
target = root.val;
}
k--;
}
if(target == null && root.left != null)
target = kthLargestCore(root.left);
return target;
}
}