[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大节点