LeetCode hot 100—二叉搜索树中第K小的元素

题目

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。

示例

示例 1:

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

示例 2:

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

分析

二叉搜索树(BST)的一个重要特性是中序遍历的结果是一个有序序列,利用这个特性可以找出第 k 小的元素。

递归法

递归过程

  • 递归调用 inorder 函数遍历左子树。
  • 每次访问一个节点时,count 加 1。
  • 当 count 等于 k 时,说明找到了第 k 小的元素,将该节点的值赋给 result 并返回。
  • 递归调用 inorder 函数遍历右子树。

时间复杂度:O(H+k), H 是树的高度

空间复杂度:O(H)

class Solution {
private:int count = 0;int result = 0;void inorder(TreeNode* node, int k) {if (!node) return;// 先遍历左子树inorder(node->left, k);// 计数器加 1count++;if (count == k) {result = node->val;return;}// 再遍历右子树inorder(node->right, k);}
public:int kthSmallest(TreeNode* root, int k) {inorder(root, k);return result;}
};  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java SE】Arrays类

参考笔记: Java中Arrays类(操作数组的工具)_java arrays-CSDN博客 Java——Arrays 类详解_java arrays类-CSDN博客 目录 1.Arrays类简介 2.Arrays.toString 2.1 使用示例 2.2 源码 3. Arrays.copyOf 3.1 使用示例 3.2 源码 4.Arrays.sort 4.1 默认排序使…

git命令简陋版本

git push git pull 临时仓库暂存区 ##############创建提交################ git init #创建git地址 git config --global user.name "***YQ1007" git config --global user.email "***gmail.com" git remote…

6. 王道_网络协议

1 网络协议和网络模型 2 TCP/IP协议族概览 2.1 四层模型的各层实体 2.2 协议数据单元的转换 2.3 常见协议以及分层 2.4 ifconfig 2.5 本地环回设备 3 以太网 3.1 以太网和交换机 3.2 以太网帧 MAC地址大小 48位 6字节 IP地址 32位 4字节 port 16位 2字节 3.3 ARP协议 4 IP协…

minecraft.service 文件配置

minecraft.service 文件配置 # /etc/systemd/system/minecraft.service [Unit] DescriptionMinecraft Fabric Server Afternetwork.target Wantsnetwork-online.target[Service] Usermcfabricuser Groupmcfabricuser WorkingDirectory/minecraft/1.21.1-fabric-server ExecStar…

python leetcode简单练习(2)

20 有效括号 方法思路 要判断一个仅由括号组成的字符串是否有效,可以使用栈这一数据结构。核心思路是遍历字符串中的每个字符,遇到左括号时压入栈中,遇到右括号时检查栈顶的左括号是否匹配。若匹配则弹出栈顶元素,否则返回false。…

AI 数字人短视频数字人口播源码:短视频内容生产的新引擎​

在当下信息爆炸的时代,短视频已成为主流的信息传播与娱乐方式之一。在如此庞大的市场需求下,如何高效、创新地生产短视频内容成为了行业关注的焦点。AI 数字人短视频数字人口播源码应运而生,为短视频内容生产带来了全新的变革。​ 一、行业背…

AI对传统IT行业的变革

传统 IT 行业长期以来面临着诸多挑战。系统类型繁杂、复杂度高,不少环节依赖人工操作,智能化水平偏低,极大地制约了业务运营效率。此外,传统 IT 企业背负沉重的历史包袱,重构系统不仅成本高昂,由于现有系统…

mapbox基础,使用geojson加载cluster聚合图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️circle点图层样式二、🍀使用geojson加…

Git回退文件到指定提交

你可以使用 git checkout 命令将某个文件回退到指定提交的版本。以下是具体步骤: 1. 找到目标提交的哈希值 git log --oneline通过 git log 查看提交历史,找到你要回退到的目标提交的哈希值(例如 abc123d)。 2. 回退文件到指定提…

如何屏蔽mac电脑更新提醒,禁止系统更新

最烦mac的系统更新提醒了,过几天就是更新弹窗提醒,现在可以直接禁掉了,眼不见心不乱,不然一升级,开发环境全都不能用了,那才是最可怕的,屏蔽的方法也很简单,就是屏蔽mac系统更新的请…

mac m1/m2/m3 pyaudio的安装

google了很多方法,也尝试了 issue68的方法, 但是均失败了,但是问deepseek竟然成功了,下面是deepseek r1给出的方法。在M3 pro芯片上可以成功运行. 安装homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent…

hackmyvm-JO2024

arp-scan -l nmap -sS -v 192.168.222.202 gobuster dir -u http://192.168.222.202 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php -b 301,401,403,404 访问/preferences.php 看一下cookie 解密 TzoxNToiVXNlclByZWZlcmVuY2VzIjoyOntzOjg6Imxhbmd1…

从零开始学习SQL

1.1 MySQL概述 1. 数据管理技术的发展过程 数据库技术是应数据管理任务的需要而产生的 a. 什么是数据管理 ** 对数据进行收集、分类、组织、编码、存储、检索和维护一系列活动的总和 **b. 数据管理技术的发展过程 人工管理阶段(20世纪50年代中之前)…

输电线路在线监测通信规约,即I1协议

文章目录 概要整体架构流程数据帧格式技术细节 概要 输电线路在线监测系统 transmission lines online monitoring system 监测输电线路设备本体、气象环境、通道状况等信息,定性或定量分析输电线路运行状况的应用系 统。一般包括主站系统、监测装置以及主站系统与…

【AI】Orin NX+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功

【AI】郭老二博文之:AI学习目录汇总 1、烧写系统 新到的开发板,已经烧写好Ubuntu系统,版本为22.04。 如果没有升级到Ubuntu22.04,可以在电脑Ubuntu系统中使用SDKManager来烧写Ubuntu系统,网络情况好的话,也可以直接将CUDA、cuDNN、TensorRT、Deepstream等也安装上。 2…

C++之输入与输出

文章目录 C 输入输出 (I/O) 详解基本 I/O 组件(input / output)基本输出 (cout)基本输入 (cin)格式化输出文件 I/O字符串流常见 I/O 方法比较错误处理其他保留小数 C 输入输出 (I/O) 详解 C 使用标准库中的 iostream 库来处理输入输出操作。主要包括以下…

流动的梦境:GPT-4o 的自回归图像生成深度解析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

eBay多账号安全运营技术体系:从环境隔离到智能风控的工程化实践

一、多账号运营风险模型解析 (技术化重构关联检测机制) 环境指纹维度: 浏览器指纹参数:Canvas/WebGL渲染特征(差异度要求≥98%) 设备指纹参数:GPU型号/声卡特征(识别准确率92%&…

Vue 3 模板引用(Template Refs)详解与实战示例

Vue 3 模板引用(Template Refs)详解与实战示例 引言 在 Vue 开发中,通常推荐使用 响应式数据 (ref 和 reactive) 进行数据绑定,而不是直接操作 DOM。但是,在某些情况下,我们确实需要访问某个组件或 DOM 元…

《Operating System Concepts》阅读笔记:p495-p511

《Operating System Concepts》学习第 44 天,p495-p511 总结,总计 17 页。 一、技术总结 1.cache (1)定义 A cache is a region of fast memory that holds copies of data. (2)cache 和 buffer 的区别 The difference between a buffer and a cac…