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

力扣面试150题--二叉搜索树迭代器

Day 50

题目描述

在这里插入图片描述

思路

初次思路:想的比较简单,在构造这个类的时候,直接求出中序遍历,存放在一个数组中,维护一个序号,当然这个不满足进阶做法的空间复杂度,因为需要保存中序遍历的所有值。

/*** 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 BSTIterator {public TreeNode root;public List<TreeNode>mid;int i=0;public BSTIterator(TreeNode root) {mid=new ArrayList<TreeNode>();findmin(root);}public void findmin(TreeNode root){if(root==null){return;}findmin(root.left);mid.add(root);findmin(root.right);}public int next() {int res= mid.get(i).val;i++;return res;}public boolean hasNext() {if(i>=mid.size()){return false;}else{return true;}}
}/*** Your BSTIterator object will be instantiated and called as such:* BSTIterator obj = new BSTIterator(root);* int param_1 = obj.next();* boolean param_2 = obj.hasNext();*/

进阶做法:(题解)
迭代做法,我们知道取得中序遍历可以通过栈来实现,那么就把中序遍历采取非递归写法,每次获取下一个节点,就从栈中取出一个节点,并且处理它后面需要压入栈的节点处理了。这样就满足了进阶的空间复杂度。

class BSTIterator {private TreeNode cur;private Deque<TreeNode> stack;public BSTIterator(TreeNode root) {cur = root;stack = new LinkedList<TreeNode>();}public int next() {while (cur != null) {stack.push(cur);cur = cur.left;}cur = stack.pop();int ret = cur.val;cur = cur.right;return ret;}public boolean hasNext() {return cur != null || !stack.isEmpty();}
}

相关文章:

  • 海量数据查询加速:Presto、Trino、Apache Arrow 实战指南
  • 第五十二节:增强现实基础-简单 AR 应用实现
  • Odoo 自动化规则全面深度解析
  • 《仿盒马》app开发技术分享-- 地图选点(端云一体)
  • Python爬虫实战:研究Selenium框架相关技术
  • 大数据下HashMap 扩容优化方案及选择
  • 哈希表day5
  • 【C++】给定数据长度n,采样频率f,频率分辨率是多少?
  • day37打卡
  • 微信小程序进阶第2篇__事件类型_冒泡_非冒泡
  • 精益数据分析(86/126):Parse.ly的转型启示——从用户增长到商业变现的艰难跨越
  • kali切换为中文
  • Golang 的协程调度小结
  • 原子操作(C++)
  • 初等数论--Garner‘s 算法
  • crash常用命令
  • JavaScripts API(应用程序编程接口)
  • 提问:鲜羊奶是解决育儿Bug的补丁吗?
  • 2025河北CCPC 题解(部分)
  • 人工智能如何协助老师做课题
  • 我想给别人做网站/磁力天堂最新版地址
  • 电子商务网站建设/seo收录查询工具
  • 西安品牌网站建设服务商/整合营销什么意思
  • 网页视频怎么下载到电脑桌面/商丘网站seo
  • 巴彦淖尔网站网站建设/扬州网络优化推广
  • 湖南智能网站建设平台/618网络营销策划方案