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

面试算法55:二叉搜索树迭代器

题目

请实现二叉搜索树的迭代器BSTIterator,它主要有如下3个函数。

  • 构造函数:输入二叉搜索树的根节点初始化该迭代器。
  • 函数next:返回二叉搜索树中下一个最小的节点的值。
  • 函数hasNext:返回二叉搜索树是否还有下一个节点。

分析

如果对二叉树的中序遍历的迭代代码足够熟悉,我们就会注意到中序遍历的迭代代码中有一个while循环,循环的条件为true时循环体每执行一次就遍历二叉树的一个节点。当while循环的条件为false时,二叉树中的所有节点都已遍历完。因此,中序遍历的迭代代码中的while循环可以看成迭代器hasNext的判断条件,而while循环体内执行的操作就是函数next执行的操作。

public class BSTIterator {TreeNode cur;Stack<TreeNode> stack;public BSTIterator(TreeNode root) {cur = root;stack = new Stack<>();}public boolean hasNext() {return cur != null || !stack.isEmpty();}public int next() {while (cur != null) {stack.push(cur);cur = cur.left;}cur = stack.pop();int val = cur.val;cur = cur.right;return val;}
}
http://www.lryc.cn/news/217389.html

相关文章:

  • Linux Crontab 定时任务
  • HiveSQL高级进阶技巧
  • 【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用
  • 安装富文本组件
  • Tomcat下载地址(详细)
  • 领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
  • Django实战项目-学习任务系统-自定义URL拦截器
  • [已解决]该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系。
  • 通过在Z平面放置零极点的来设计数字滤波器
  • linux环境docker部署nginx对生产日志按日切割并压缩处理
  • 【Spring Boot】发送邮件功能
  • ELK问题整理
  • 《黑客帝国:破解编程密码》——探索编程世界的奥秘
  • 【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击
  • 路由器基础(十二):IPSEC VPN配置
  • Python 获取cpu、内存利用率
  • Apache ECharts简介和相关操作
  • 怎么看待工信部牵头推动人形机器人发展
  • Hikari源码分析
  • 修改YOLOv5的模型结构
  • React 与 React Native 区别
  • Android 12.0 系统system模块开启禁用adb push和adb pull传输文件功能
  • 基于单片机的衣物消毒清洗机系统设计
  • 将 UniLinks 与 Flutter 集成(安卓 AppLinks + iOS UniversalLinks)
  • Spring-Spring 之底层架构核心概念解析
  • 电脑版WPS怎么将更新目录加到快速访问栏
  • 保障效率与可用,分析Kafka的消费者组与Rebalance机制
  • “1-5-15”原则:中国联通数字化监控平台可观测稳定性保障实践
  • LinkedList详解-Deque接口链表实现方案
  • 【考研数据结构代码题1】二叉搜索树的插入与查找