力扣面试 150二叉搜索树迭代器 中序遍历 栈模拟递归 步骤拆分

Problem: 173. 二叉搜索树迭代器

思路

👩‍🏫 三叶

复杂度

时间复杂度: O ( 1 ) O(1) O(1)

空间复杂度: O ( h ) O(h) O(h)

Code

Java 复制代码
class BSTIterator {
Stack<TreeNode> d = new Stack<>();

	public BSTIterator(TreeNode root)
	{
		dfsLeft(root);
	}

	public int next()
	{
		TreeNode root = d.pop();
		int ans = root.val;
		root = root.right;
		dfsLeft(root);
		return ans;
	}

	public boolean hasNext()
	{
		return !d.isEmpty();
	}

	void dfsLeft(TreeNode root)
	{
		while (root != null)
		{
			d.push(root);
			root = root.left;
		}
	}
}
相关推荐
leory3 分钟前
请描述Binder IPC的基本原理和工作流程
android·面试
leory4 分钟前
View的事件分发机制是怎样的?dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent的关系?
android·面试
anew___9 分钟前
算法分析与设计课程全算法核心概述|期末复习+知识梳理
算法
daad77710 分钟前
记录一次上下文切换次数的统计
服务器·c++·算法
fliter10 分钟前
Cloudflare 推出 Flagship:为 AI 时代重新设计的功能开关服务
后端·算法
生成论实验室17 分钟前
《源·觉·知·行·事·物:生成论视域下的统一认知语法》第十七章 科学与人心的重聚
人工智能·算法·架构·知识图谱·创业创新
chao18984423 分钟前
局部保局投影(LPP)算法实现
算法
ShoreKiten43 分钟前
cpp考前急救
数据结构·c++·算法
纪伊路上盛名在1 小时前
机器学习中常见的距离度量函数 Distance metrics
人工智能·算法·机器学习·数据分析·统计
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2026.05.07 题目:3660. 找到所有可以到达的最大值
笔记·算法·leetcode