[LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点相关的知识,希望对你有一定的参考价值。

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

示例 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 ≤ 二叉搜索树元素个数

题解:

class Solution 
    int res;
    int k;

    /**
     * 剑指 Offer 54. 二叉搜索树的第k大节点
     */
    public int kthLargest(TreeNode root, int k) 
        /*
         * 二叉搜索树中序遍历(左 -> 根 -> 右)结果列表为升序,
         * 则二叉搜索树中序遍历的逆序遍历(右 -> 根 -> 左)结果列表为降序,
         * 记录结果列表的下标,直接返回第 k 个数字即可
         */
        this.k = k;
        dfs(root);
        return res;
    

    void dfs(TreeNode root) 
        if (root == null) 
            return;
        

        // 递归右子树
        dfs(root.right);

        // 找到了第 k 大的数,提前结束遍历
        if (--k == 0) 
            res = root.val;
            return;
        

        // 递归左子树
        dfs(root.left);
    

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

以上是关于[LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Java刷题笔记—剑指 Offer 54. 二叉搜索树的第k大节点

⭐算法入门⭐《二叉树 - 二叉搜索树》简单10 —— LeetCode 剑指 Offer 54. 二叉搜索树的第k大节点

剑指Offer 54 - 二叉搜索树的第K大节点

剑指OFFER----面试题54. 二叉搜索树的第k大节点

剑指Offer 54 二叉搜索树的第k大节点

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