LeetCode 每日一题 [68] 二叉搜索树的第k大节点

LeetCode 二叉搜索树的第k大节点 [简单]

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof

示例 1:

输入: root = [3,1,4,null,2], k = 1
3
/ \
1 4
\
2
输出: 4

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k = 3
5
/ \
3 6
/ \
2 4
/
1
输出: 4

限制:

1 ≤ k ≤ 二叉搜索树元素个数

题目分析
解法1

搜索二叉树,中序遍历为正序,因为需要寻找的是第k大的,也就是中序倒序的第k个,中序倒序的遍历为 右 中 左

代码实现
public class KthLargest {
    private static int res, k;

    public int kthLargest(TreeNode root, int k) {
        KthLargest.k = k;
        dfs(root);
        return res;
    }

    private static void dfs(TreeNode root) {
        if (root == null) {
            return;
        }
        dfs(root.left);
        if (k == 0) {
            return;
        }
        if (--k == 0) {
            res = root.val;
        }
        dfs(root.left);
    }
}

你可能感兴趣的:(LeetCode 每日一题 [68] 二叉搜索树的第k大节点)