美文网首页
LeetCode 每日一题 [68] 二叉搜索树的第k大节点

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

作者: 是小猪童鞋啦 | 来源:发表于2020-07-28 08:09 被阅读0次
    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大节点

          本文链接:https://www.haomeiwen.com/subject/esghzhtx.html