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

leetcode 二叉搜索树中第k小的元素 java

中序遍历
在这里插入图片描述

  1. 定义一个栈,用于存取二叉树中的元素
Deque<TreeNode> stack = new ArrayDeque<TreeNode>();
  1. 进入while循环while(! stack.isEmpty()|| root != null){}
  2. 将root的左节点入栈,直到root==null
while(root==null){stack.push(root);root= root.left;
}
  1. 将栈中的节点取出来,--k;
root = stack.pop();
--k;
if(k==0){
break;
  1. 开始取右节点
root = root.right;
  1. 最后返回root.val

整体代码:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int kthSmallest(TreeNode root, int k) {Deque<TreeNode> stack  = new ArrayDeque<TreeNode>();while(! stack.isEmpty()||root!=null){while(root!=null){stack.push(root);root = root.left;}root = stack.pop();--k;if(k==0){break;}root = root.right;}return root.val;}
}
http://www.lryc.cn/news/2399244.html

相关文章:

  • 5.1 初探大数据流式处理
  • 基于 Android 和 JBox2D 的简单小游戏
  • 传输层协议 UDP 介绍 -- UDP 协议格式,UDP 的特点,UDP 的缓冲区
  • Python try-except-else 语句详解
  • ApacheSuperset CVE-2023-27524
  • Windows Server部署Vue3+Spring Boot项目
  • malloc 是如何分配内存的?——C 语言内存分配详解
  • Opencl
  • 如何在 HTML 中添加按钮
  • 【优秀三方库研读】quill 开源库中的命名空间为什么要用宏封装
  • AlphaFold3运行错误及解决方法(1)
  • Linux--进程的程序替换
  • 调教 DeepSeek - 输出精致的 HTML MARKDOWN
  • 【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理
  • GQA(Grouped Query Attention):分组注意力机制的原理与实践《一》
  • 【深度学习优化算法】02:凸性
  • JAVA国际版一对一视频交友视频聊天系统源码支持H5+APP
  • 策略公开了:年化494%,夏普比率5.86,最大回撤7% | 大模型查询akshare,附代码
  • 【C++】string类的模拟实现(详解)
  • 业界宽松内存模型的不统一而导致的软件问题, gcc, linux kernel, JVM
  • 多模态大语言模型arxiv论文略读(101)
  • 量化Quantization初步之--带量化(QAT)的XOR异或pyTorch版250501
  • Linux Maven Install
  • #Java篇:学习node后端之sql常用操作
  • 电网“逆流”怎么办?如何实现分布式光伏发电全部自发自用?
  • 如何查看电脑电池性能
  • kubernetes》》k8s》》kubectl proxy 命令后面加一个
  • 深入理解Linux系统进程切换
  • 网络安全运维实训室建设方案
  • DBeaver 连接mysql报错:CLIENT_PLUGIN_AUTH is required