当前位置:网站首页>[LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点
[LeetCode]剑指 Offer 54. 二叉搜索树的第k大节点
2022-08-02 15:41:00 【Spring-_-Bear】
给定一棵二叉搜索树,请找出其中第 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
边栏推荐
- Mysql 查询语句中where字段= '' 作用是什么 ?如何实现多条件查询
- 【wpf】ListView 和 ItemsControl 的一点区别
- SIGIR'22 推荐系统论文之序列推荐(短文)篇
- JZ70 矩形覆盖
- 快速搞懂Seata分布式事务AT、TCC、SAGA、XA模式选型
- 金鱼哥RHCA回忆录:CL210管理计算资源--红帽的超融合基础设施
- Why do I no longer recommend the enumeration strategy pattern?
- 软件测试面试中90%会遇到的问题:“你会搭建测试环境吗?”
- 亏损扩大/毛利偏低,北斗智联与「智能座舱第一阵营」的不等号
- CefSharp practical demonstration
猜你喜欢
随机推荐
一文搞懂│php 中的 DI 依赖注入
每日练习------定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
NC52 有效括号序列
AI+BI+可视化,Sugar BI架构深度剖析
QueryWrapper method explained
JZ40 最小的K个数
ROS 之 KUKA iiwa编程
再见Attention:建模用户长期兴趣的新范式
关于小程序TabBar跳转页面跟TabBar标签栏的icon不对应的分析(debug)
VPP snort插件
JZ9 用两个栈实现队列
JZ15 二进制中1的个数
JZ32 从上往下打印二叉树
快速搞懂Seata分布式事务AT、TCC、SAGA、XA模式选型
记一次内部分享——瞎扯淡
ICML/ICLR'22 推荐系统论文梳理
打破千篇一律,DIY属于自己独一无二的商城
QueryWrapper方法解释
智能座舱供应链的“新主角”
【Codeforces Round #811 (Div. 3)】【题目解析+AK代码】