【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
文章目录
- 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
- 一、中序遍历(提前返回)
一、中序遍历(提前返回)
二叉搜索树的中序遍历为递增序列
根据这个性质,易得二叉搜索树的中序遍历倒序为递减序列,因此,求 “二叉搜索树第 k 大的结点” 可转化为求 “此树的中序遍历倒序的第 k 个结点”
为了求第 k 个结点,需要实现以下三项工作:
- 递归遍历时计数,统计当前结点的序号
- 递归到第 k 个结点时,应记录结果 res
- 记录结果后,后续的遍历即失去意义,应提前终止
递归解析:
- 终止条件:当结点 root 为空(越过叶结点),则直接返回
- 递归右子树:即 dfs(root.right)
- 三项工作:
- 提前返回:若 k = 0,代表已找到目标结点,无需继续遍历,因此直接返回
- 统计序号:执行 k = k - 1
- 记录结果:若 k = 0,代表当前结点为第 k 大的结点,因此记录 res = root.val
- 递归左子树:即 dfs(root.left)
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {int res;int 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);}
}
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点相关推荐
- 剑指offer之二叉搜索树的第K个节点
1 问题 给定一颗二叉搜索树,请找出其中的第k小的结点.例如, 5 3 7 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 2 分析 二叉树定义:二叉查找树(Binary Se ...
- 剑指offer:二叉搜索树的第k个结点(中序遍历)
1. 题目描述 /*给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. */ 2. 思路 中序遍历二叉搜索树,第K个就是结 ...
- 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
1. 题目 给定一棵二叉搜索树,请找出其中第k大的节点. 示例 1: 输入: root = [3,1,4,null,2], k = 13/ \1 4\2 输出: 4示例 2: 输入: root = [ ...
- 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...
- 【刷题-剑指 Offer】 54. 二叉搜索树的第k大节点
题目 给定一棵二叉搜索树,请找出其中第k大的节点. 我的解法:(中序遍历) /*** Definition for a binary tree node.* public class TreeNode ...
- 剑指offer之二叉搜索树的第K个结点
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点.例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4. 解题思路 二叉搜索树的中序遍历是顺序结构,利用中序遍历即可求 ...
- leetcode —— 面试题54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点. 解法一:使用递归和中序遍历 # Definition for a binary tree node. # class TreeNode: # def __ ...
- 54. 二叉搜索树的第k大节点
2020-06-22 1.题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 2.题解 中序遍历二叉搜索树即为升序的结果,将其存储在vector中,最后进行输出即可. 3.代码 /*** Defi ...
- 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表
[LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 文章目录 [LeetCode]剑指 Offer 36. 二叉搜索树与双向链表 package offer;//定义节点 class ...
最新文章
- webconfig.java_基于JavaConfig配置的Spring MVC的构建
- android 上传图片到服务器Tomcat(Struts2)
- WGS84经纬度坐标转北京54高斯投影地方坐标流程
- 嵌入式Linux系统编程学习之二常用命令
- 如何学好前端,这5点你一定要知道!
- 遍历点击事件(屏蔽同类名的其它点击事件,防止多次请求)
- java视频上传方法_java大视频上传实现
- 程序猿的中秋节——浪漫至死不渝!!
- STM32单片机基础知识总结(二)
- 能玩游戏的计算机推荐,电脑玩啥端游合适 适合长期玩的游戏有哪些
- 一款对程序员体验友好的浏览器翻译插件
- 计科生毕业一年,做了什么?
- 医学图像处理涉及到的窗宽窗位 1
- 2021-基于深度学习的人脸检测综述文献-摘要
- chrome tv版_软件推荐TV版APP:影迷大院1.0TV纯净版
- operation 04
- 蓝桥杯-分巧克力 【二分】
- C语言——字符串旋转问题
- 如何用python画爱心表白_程序员式优雅表白,教你用python代码画爱心
- 亚信安全虚拟手机服务器,亚信安全云手机服务器
热门文章
- c++去除图片上的文字_图片文字修改去除方法
- va_start、va_end、va_arg 实现可变长参数
- 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~
- 远程桌面保存密码(凭据)的备份导出
- 是时候重构下自己的博客了
- html图片自动替换图片,十种图片替换文本CSS方法
- (224)FPGA数字信号处理入门指导
- (106)FPGA面试题-Verilog编写50MHz时钟激励
- (49)FPGA线性单驱动(wire型)
- RTT学习笔记5-线程间的通讯