(树) 剑指 Offer 54. 二叉搜索树的第k大节点 ——【Leetcode每日一题】

news/2025/2/13 23:04:33/

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

难度:简单

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

示例 1:

输入: root = [3,1,4,null,2], k = 13/ \1   4\2
输出: 4

示例 2:

输入: root = [5,3,6,2,4,null,null,1], k = 35/ \3   6/ \2   4/1
输出: 4

限制

  • 1 ≤ k ≤ 二叉搜索树元素个数

💡思路:中序遍历

找第 k 大的结点,二叉搜索树的中序遍历结果是从小到大排序:

  • 所以其实就是对二叉搜索树进行 倒过来的中序遍历
    • 遍历顺序为:右 -> 中 -> 左
    • 每遍历一个元素 k--,当 k = 0 时就是最终结果。

🍁代码:(C++、Java)

C++

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
private:int ans = 0;void inOrder(TreeNode* root, int& k){if(root == nullptr || k <= 0) return;inOrder(root->right, k);if(--k == 0){ans = root->val;return;}inOrder(root->left, k);}
public:int kthLargest(TreeNode* root, int k) {inOrder(root, k);return ans;}
};

Java

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {private int ans, k;private void inOrder(TreeNode root){if(root == null || k <= 0) return;inOrder(root.right);if(--k == 0){ans = root.val;return;}inOrder(root.left);}public int kthLargest(TreeNode root, int k) {this.k = k;inOrder(root);return ans;}
}

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),当树退化为链表时(全部为右子节点),无论 k 的值大小,递归深度都为 n ,占用 O ( n ) O(n) O(n) 时间。
  • 空间复杂度 O ( n ) O(n) O(n),当树退化为链表时(全部为右子节点),系统使用 O ( n ) O(n) O(n) 大小的栈空间。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!


http://www.ppmy.cn/news/1014167.html

相关文章

Effective Java笔记(29)优先考虑泛型

一般来说 &#xff0c;将集合声 明参数化&#xff0c;以及使用 JDK 所提供的泛型方法&#xff0c;这些都不太困难 。编写自己的泛型会比较困难一些&#xff0c;但是值得花些时间去学习如何编写 。 以简单的&#xff08;玩具&#xff09;堆校实现为例 &#xff1a; // Object -…

有奖活动 | 大咖论道:一同畅聊鸿蒙生态

点击预约直播 活动简介 即日起-2023年9月5日&#xff0c;参与本期活动与大咖一起聊聊鸿蒙新生态&#xff0c;您可以在社区写下对鸿蒙生态的畅想&#xff0c;也可以学习相关课程并获取证书&#xff0c;完成活动任务即可参与精美礼品抽奖。 活动周期 8月1日-9月5日 参与考试 Harm…

冠达管理:A股三大指数震荡整理 机构看好反弹趋势延续

周一&#xff0c;沪深两市呈弱势震动格式&#xff0c;创业板指领跌。到收盘&#xff0c;上证综指跌0.59%&#xff0c;报3268.83点&#xff1b;深证成指跌0.83%&#xff0c;报11145.03点&#xff1b;创业板指跌1%&#xff0c;报2240.77点。 资金面上&#xff0c;沪深两市昨日合计…

Android WIFI-系统连接WIFI显示网络连接受限

问题描述 使用Android设备打开设置&#xff0c;选择WIFI输入正确密码连接&#xff0c;会显示已连接&#xff0c;无网络&#xff0c;然后变成网络连接受限&#xff0c;实际可以使用此WIFI进行上网。 问题分析 异常Log D NetworkMonitor/100: PROBE_DNS www.google.com 107ms O…

八年级编程代码必考题,八年级编程猫教学设计

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;八年级编程哪个内容适合上公开课&#xff0c;八年级编程猫教学设计&#xff0c;现在让我们一起来看看吧&#xff01; 算术运算符与表达式 课题 算术运算符 与表达式 单元 Python程序设计基础 学科 信息 年级 八年级 主备…

国内大模型在局部能力上已超ChatGPT

中文大模型正在后来居上&#xff0c;也必须后来居上。 数科星球原创 作者丨苑晶 编辑丨大兔 从GPT3.5彻底出圈后&#xff0c;大模型的影响力开始蜚声国际。一段时间内&#xff0c;国内科技公司可谓被ChatGPT按在地上打&#xff0c;毫无还手之力。 彼时&#xff0c;很多企业…

rman常用命令

查看时间段需要恢复的归档 RMAN> list backup of archivelog time between "to_date(2023-08-02 00:10:00,yyyy-mm-dd,hh24:mi:ss)" and "to_date(2023-08-02 03:03:03,yyyy-mm-dd hh24:mi:ss)"; #加载不在控制文件记录中的归档&#xff0c;并删除6小时…

同芯同意创未来——赛意力量 SNP ·南京半导体高科专场

7月28日&#xff0c;“赛意力量全国行”将在南京组织以“同芯同意创未来”为主题的南京半导体高科专场沙龙活动。届时&#xff0c;“赛意力量”将携众优秀企业IT及财务领域嘉宾&#xff0c;开展深度交流&#xff0c;共同为推动科技创新与区域经济发展而出谋划策。 南京作为中国…