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


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

难度简单 122

给定一棵二叉搜索树,请找出其中第 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 .

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {

    int res, k;
    public int kthLargest(TreeNode root, int k) {
        this.k = k;
        dfs(root);
        return res;
    }
    void dfs(TreeNode root) {
        if(root == null) return;
        dfs(root.right);
        if(k == 0) return;
        if(--k == 0) res = root.val;
        dfs(root.left);
    }
}

// 作者:jyd
// 链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/solution/mian-shi-ti-54-er-cha-sou-suo-shu-de-di-k-da-jie-d/

中序遍历倒序


文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
剑指 Offer 04. 二维数组中的查找 剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找难度中等 242 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有
下一篇 
404. 左叶子之和 404. 左叶子之和
404. 左叶子之和难度简单 286 计算给定二叉树的所有左叶子之和。 示例: 3 / \ 9  20 /   \ 15   7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24. 一个节点为「左叶子」节点,当且仅当它是某
  目录