LeetCode-热题100:230. 二叉搜索树中第K小的元素

news/2024/11/16 9:46:01/

题目描述

给定一个二叉搜索树的根节点 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.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/func kthSmallest(root *TreeNode, k int) int {// 初始化一个栈,用于迭代遍历二叉树var stack []*TreeNode// 迭代遍历二叉树for {// 将左子节点全部入栈for root != nil {stack = append(stack, root)root = root.Left}// 弹出栈顶元素root = stack[len(stack) - 1]stack = stack[:len(stack) - 1]// 找到第 k 小的元素k--if k == 0 {return root.Val}// 处理右子节点root = root.Right}
}

代码解释

  • 使用中序遍历来遍历BST。中序遍历BST会按照递增顺序访问所有节点。
  • 使用一个来迭代遍历二叉树。
  • k 减到 0 时,表示找到了第 k 小的元素,返回该元素的值。

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

相关文章

Android 性能优化(七):APK安装包体积优化

包体积优化重要性 移动 App 特别关注投放转化率指标&#xff0c;而 App 包体积是影响用户新增的重要因素&#xff0c;而 App 的包体积又是影响投放转化率的重要因素。 Google 2016 年公布的研究报告显示&#xff0c;包体积每上升 6MB 就会带来下载转化率降低 1%&#xff0c; …

Java双列集合

Map集合 Java Map集合是一种用于存储键值对的数据结构&#xff0c;它提供了从键到值的映射。其特点和常用操作如下&#xff1a; 唯一性&#xff1a;Map中的键&#xff08;key&#xff09;必须是唯一的&#xff0c;这意味着不能有两个相同的键存在于同一个Map集合中。这是为了…

Android 应用分配的内存大小是多少

Android应用给定的内存大小可以因设备而异&#xff0c;主要受设备的硬件配置和操作系统的限制。不同的设备&#xff0c;尤其是有着不同RAM大小的设备&#xff0c;可能会为应用分配不同的最大内存数量。此外&#xff0c;同一个设备上&#xff0c;不同版本的Android操作系统也可能…

k8s中修复mongodb启动失败

背景 同事反馈 dev环境的yapi不能登录&#xff0c;看了一下是同事两年前用helm搭建的。单副本使用。 排查发现是后端数据库mongodb数据库挂掉。 rootdev-k8s-master03:~# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE mo…

Unity让地图素材遮挡人物

点击编辑/项目设置/图形&#xff0c;透明度排序模式设置自定义轴&#xff0c;透明度排序轴Y设置为1其他为0。 此时人物和地图素材的图层排序相等&#xff0c;当人物的高度大于地图素材时&#xff0c;人物则被遮挡。

如何清除Magento Cache

本周有一个客户&#xff0c;购买Hostease的虚拟主机&#xff0c;询问我们的在线客服&#xff0c;如何清除Magento的Cache。我们为用户提供教程&#xff0c;用户很快完成了设置。在此&#xff0c;我们分享这个操作教程&#xff0c;希望可以对您有帮助。 缓存是存储以供以后使用的…

Pandas数据分析学习笔记

前言 开刷Pandas数据分析&#xff0c;看起来很好理解&#xff0c;不过没做笔记没敲代码心里总是不安稳&#xff0c;所以复现下课程代码并演示其中遇到的问题&#xff0c;顺便水一水笔记好了 参考资料&#xff1a; 课程视频链接&#xff1a;Pandas数据分析从入门到实战 数据…

C++ Primer Plus(第6版) 中文版 第八章编程练习

1.编写通常接受一个参数(字符串的地址)&#xff0c;并打印该字符串的函数。然而&#xff0c;如果提供了第二个参数(int 类型)&#xff0c;且该参数不为0&#xff0c;则该函数打印字符串的次数将为该函数被调用的次数(注意&#xff0c;字符串的打印次数不等于第二个参数的值&…