当前位置: 首页 > news >正文

算法230. 二叉搜索树中第 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

提示:
树中的节点数为 n 。
1 <= k <= n <= 104
0 <= Node.val <= 104

题解:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
# 中序遍历,就是从小到大开始遍历
class Solution:def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:ans = 0def dfs(node:Optional[TreeNode]) -> None:nonlocal k,ansif node is None or k==0:return # 遍历左子树dfs(node.left)k-=1if k==0:ans = node.val# 遍历右子树dfs(node.right)dfs(root)return ans

思路

由于中序遍历就是在从小到大遍历节点值,所以遍历到的第 k 个节点值就是答案。

在中序遍历,即「左-根-右」的过程中,每次递归完左子树,就把 k 减少 1,表示我们按照中序遍历访问到了一个节点。如果减一后 k 变成 0,那么答案就是当前节点的值,用一个外部变量 ans 记录。

http://www.dtcms.com/a/340599.html

相关文章:

  • 10M25DCF484C8G Altera FPGA MAX10
  • 云原生俱乐部-RH294知识点归纳(1)
  • RK-Android11-PackageInstaller安装器自动安装功能实现
  • iOS App 混淆工具实战 医疗健康类 App 的安全与合规保护
  • 电脑驱动免费更新? 这款驱动管理工具:一键扫更新,还能备份恢复,小白也会用~
  • 【知识杂记】方差、标准差、均方误差、均方根误差与平均绝对误差,概念、计算公式、物理意义
  • 微型导轨的快速调平技术如何提升激光加工效率?
  • Python默认参数
  • CPTS--Administrator
  • 【clion】调试脚本并cmake构建Fargo项目win32版本
  • Spring Boot 配置
  • C++---向下取整(>>)与向零取整(/)
  • Vue2封装Axios
  • PyTorch - Developer Notes
  • 《录井工程与管理》——第二章井位勘测技术
  • 精品方案 | GCKontrol与OMNeT++联合仿真在机载网络性能分析中的应用
  • 基于单片机环境火灾安全检测
  • 驾驭复杂表单:用 RxJava 实现响应式表单处理
  • mysql-8.0.37-linux-glibc2.12-x86_64安装
  • 数据结构与算法系列(大白话模式)小学生起点(一)
  • 【Kafka】常见简单八股总结
  • 【39】OpenCV C++实战篇——直线拟合、直线测距、平行线段测距;(边缘检测,剔除噪点,轮廓检测,渐进概率霍夫直线)
  • ReAct Agent:让AI像人类一样思考与行动的革命性框架
  • 01_Go语言基础与环境搭建
  • 【自记】Power BI 中 ALLNOBLANKROW的适用场景举例
  • 如何选择汽车ECU的加密方法
  • docker 部署
  • 千康BOH是店易开吗?怎么和金蝶云、用友BIP、鼎捷等ERP集成?
  • 趣打印高级版--手机打印软件!软件支持多种不同的连接方式,打印神器有这一个就够了!
  • 云手机在办公场景中的优势体现