力扣面试 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;
		}
	}
}
相关推荐
wabs66611 小时前
关于图论【最短路径之Bellman_ford 算法(单源有限最短路)|卡码网96.城市间货物运输III的思考】
数据结构·算法·图论·卡码网·bellman_ford·单源有限最短路
kyriewen11 小时前
今年裁了16万技术人——但字节前端岗反而涨了23%
前端·javascript·面试
众人皆醒我独醉13 小时前
训练加速实战:Flash Attention、Gradient Checkpointing 与数据流水线
后端·面试·gpu
Loveyourself13 小时前
Claude Code Memory 总体系核心代码逐行解析
面试·agent
王林不想说话13 小时前
ES6 到 ES2026 全面进阶指南:新特性、原理、示例与工程落地
前端·javascript·面试
lsylalalala13 小时前
常见的排序算法1
数据结构·算法·排序算法
黄敬峰13 小时前
TypeScript 必考题:type 和 interface 的区别一次搞懂
面试
想吃火锅100513 小时前
【leetcode】54. 螺旋矩阵
算法·leetcode·矩阵
想吃火锅100514 小时前
【leetcode】300. 最长递增子序列
算法·leetcode·职场和发展
imaol114 小时前
数据结构---队列
java·数据结构·算法