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

Posted 刘Java

tags:

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

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

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

简单难度,我们使用反中序遍历,然后遍历一次进行k自减1,当k为0时对应的元素就是第k大的节点。

int k, res;

public int kthLargest(TreeNode root, int k) 
    this.k = k;
    dfs(root);
    return res;


private void dfs(TreeNode root) 
    //右递归
    if (root.right != null && k > 0) 
        dfs(root.right);
    
    //中序递减k并判断是否为0
    if (--k == 0) 
        res = root.val;
        return;
    
    //左循环
    if (root.left != null && k > 0) 
        dfs(root.left);
    

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

LeetCode Java刷题笔记—剑指 Offer 22. 链表中倒数第k个节点

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

LeetCode Java刷题笔记—226. 翻转二叉树

LeetCode Java刷题笔记—101. 对称二叉树

LeetCode Java刷题笔记—101. 对称二叉树

LeetCode Java刷题笔记—113. 路径总和 II