Skip to content

54.二叉搜索树的第k大节点

给定一棵二叉搜索树,请找出其中第 k 大的节点的值。

class Solution {
    public int ans,k;
    public int kthLargest(TreeNode root, int k) {
        this.k = k;
        dfs(root);
        return ans;
    }
    public void dfs(TreeNode root){
        if(root == null) return;
        // 第k大 则说明要从右边开始遍历
        dfs(root.right);
        // 每次遍历都进行判断,当已经找到结果后,后续的遍历都直接返回
        if(k == 0) return;
        // 每次都-1,并判断是否是要找的值,如果是存储起来
        if(--k == 0) ans = root.val;
        // 遍历完右边,再遍历左边
        dfs(root.left);
    }
}