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

力扣 hot100 Day45

230. 二叉搜索树中第 K 小的元素

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

//抄的
class Solution {
public:   void helper(TreeNode* root,int k,int& count,int& result){   if(!root) return;helper(root->left,k,count,result);count++;if(count==k){result = root->val;return;}helper(root->right,k,count,result);}int kthSmallest(TreeNode* root, int k) {int count=0;int result;helper(root,k,count,result);return result;}
};

二叉搜索树的中序遍历结果必定是一个升序序列​

在中序遍历的逻辑基础上,维护一个count引用进行计数,与k进行对比,就能够遍历到第k小的元素。

可以考虑用显式栈替换递归栈进行中序遍历,可以避免递归栈溢出,如下

//抄的
class Solution {
public:   int kthSmallest(TreeNode* root, int k) {stack<TreeNode*> st;int count = 0;while (root || !st.empty()) {while (root) {  // 遍历左子树st.push(root);root = root->left;}root = st.top();st.pop();count++;if (count == k) return root->val;root = root->right;  // 遍历右子树}return -1;  // 如果 k 超出范围}
};

http://www.lryc.cn/news/589208.html

相关文章:

  • LeetCode Hot100 【1.两数之和、2.两数相加、3.无重复字符的最长子串】
  • 拼多多笔试题目一
  • 人机协作系列(四)AI编程的下一个范式革命——看Factory AI如何重构软件工程?
  • 力扣——1071. 字符串的最大公因子
  • 基于Alpine构建MySQL镜像
  • sublime如何支持换行替换换行
  • PHP安全漏洞深度解析:文件包含与SSRF攻击的攻防实战
  • Azure FXmsv2 系列与 Azure FXmdsv2 系列虚拟机正式发布
  • 606. 二叉树创建字符串
  • Java全栈工程师面试实录:从电商支付到AI大模型的应用场景与技术栈解析
  • Android 获取 UserAgent (UA) 的三种方式深度解析:差异、风险与最佳实践
  • C++中的模板参数 vs 函数参数:编译期与运行期的分界线
  • X 射线探伤证考试核心:辐射安全基础知识点梳理
  • 如何正确分配及设置香港站群服务器IP?
  • 创客匠人:创始人 IP 的破局思维,重构知识变现的深层逻辑
  • LeetCode--46.全排列
  • 梳理Bean的创建流程
  • keeplived双击热备配置
  • 【高并发服务器】多路复用的总结 eventfd timerfd
  • 在Autodl服务器中使用VNC建立图形界面
  • JavaBean
  • 【亲测有效】ubuntu20.04服务器新建用户+vnc配置教程
  • 域名转发设置
  • linux 内核: 遍历当前所有进程
  • 演示扩展卡尔曼滤波在无人驾驶多传感器融合中的应用
  • Wiz笔记二次开发
  • 使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
  • 可微分3D高斯溅射(3DGS)在医学图像三维重建中的应用
  • vllm本地部署qwen3-4b
  • 2.【C# in .NET】探秘数据类型:从底层机制到实战启示