173. 二叉搜索树迭代器

实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。

调用 next() 将返回二叉搜索树中的下一个最小的数。

示例:

BSTIterator iterator = new BSTIterator(root);
iterator.next(); // 返回 3
iterator.next(); // 返回 7
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 9
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 15
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 20
iterator.hasNext(); // 返回 false

提示:

next() 和 hasNext() 操作的时间复杂度是 O(1),并使用 O(h) 内存,其中 h 是树的高度。
你可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 中至少存在一个下一个最小的数。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class BSTIterator {private TreeNode root;private List<Integer> inOrder;private Iterator<Integer> it;//中序遍历private void inorder(TreeNode root){if(root!=null){inorder(root.left);inOrder.add(root.val);inorder(root.right);}}public BSTIterator(TreeNode root) {this.root=root;this.inOrder = new ArrayList<>();inorder(this.root);it=this.inOrder.iterator();}/** @return the next smallest number */public int next() {return this.it.next();}/** @return whether we have a next smallest number */public boolean hasNext() {if(this.it.hasNext())return true;return false;}
}/*** 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();*/

Java实现 LeetCode 173 二叉搜索树迭代器相关推荐

  1. LeetCode 173. 二叉搜索树迭代器(中序遍历)

    文章目录 1. 题目信息 2. 二叉树中序遍历 1. 题目信息 实现一个二叉搜索树迭代器.你将使用二叉搜索树的根节点初始化迭代器. 调用 next() 将返回二叉搜索树中的下一个最小的数. 示例: B ...

  2. leetcode 173. 二叉搜索树迭代器

    实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象 ...

  3. Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现

    解题思路: 使用中序遍历,将二叉搜索树的所有节点值依次push进队列中.每调用依次next函数,即返回队首元素,并pop.hasNext函数只需判断队列是否为空即可. /*** Definition ...

  4. 173. 二叉搜索树迭代器/94. 二叉树的中序遍历/145. 二叉树的后序遍历/98. 验证二叉搜索树

    2020-05-12 1.题目描述 二叉搜索树迭代器 2.题解 对于二叉搜索树而言,进行中序遍历就可以得到其有序序列,我们可以先对树进行遍历,将结果保存在 vector中,然后进行计算即可. 3.代码 ...

  5. 173. 二叉搜索树迭代器(二叉搜索树+栈)

    实现一个二叉搜索树迭代器.你将使用二叉搜索树的根节点初始化迭代器. 调用 next() 将返回二叉搜索树中的下一个最小的数. 示例: BSTIterator iterator = new BSTIte ...

  6. LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)

    文章目录 1. 题目 2. 解题 1. 题目 实现二叉搜索树(BST)的中序遍历迭代器 BSTIterator 类: BSTIterator(TreeNode root) 初始化 BSTIterato ...

  7. LeetCode 653. 两数之和 IV - 输入 BST(二叉搜索树迭代器双指针)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true. 案例 1: 输入: 5/ \3 6/ \ ...

  8. leetcode 530. 二叉搜索树的最小绝对差(Java版)

    题目 https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 题解 中序遍历法. 本题要求二叉搜索树任意两节点差的绝对 ...

  9. leetcode 235. 二叉搜索树的最近公共祖先(Java版,树形dp套路)

    题目 原题地址:leetcode 235. 二叉搜索树的最近公共祖先 说明: 所有节点的值都是唯一的. p.q 为不同节点且均存在于给定的二叉搜索树中. 题解 关于 树形dp 套路,可以参考我的另一篇 ...

最新文章

  1. oracle+数据到+mysql数据库乱码问题_Linux系统Oracle数据库乱码问题的解决方法
  2. 蓝牙耳机和蓝牙鼠标相互干扰_蓝牙耳机推荐:编辑亲测后中肯评价五大爆款蓝牙耳机...
  3. SOAP/Web Service/WSDL关系
  4. 新华三助力公安构建新IT“警盾”
  5. jenkins组权限_Jenkins 中基于角色的权限管理
  6. 简单的路由封装ppp
  7. C++中对sprintf()
  8. 自定义注解和注解的相关使用
  9. 计算机的字体要怎么删除,计算机安装删除字体
  10. java车牌号识别EasyPR_EasyPR
  11. autocad字体ccfang,求CAD字体hzmsdi.shx 发到我邮箱,185955330@qq.com
  12. DS18B20温度传感器学习笔记
  13. emc re 整改 超标_EMC测试及整改对策.ppt
  14. C++ IO的简单用法
  15. 送给80、90后的人生经典语录,别再孩子气了
  16. mysql按月份分组查询_mysql如何按月份分组查询
  17. 如何升级IE浏览器 电脑IE浏览器怎么升级
  18. 广东小学几年级有计算机课,广州小学开设网络班:小学生人手一台手提电脑
  19. JPO 创建Excel相关问题解决
  20. matlab 不规则 griddata,MATLAB 不规则随机数据点,画三维曲面图形,griddata, meshgrid...

热门文章

  1. 重庆农业银行商贷转公积金流程
  2. Spring事务简介(案例:银行账户转账)
  3. [dx12]Flip, VSync 和 GSync
  4. MyBatis-Plus使用详解
  5. ExternalInterface的简单使用方法
  6. WPF布局控件之WrapPanel
  7. 掌财社:炒期货爆仓的解决办法
  8. Python学习分享——计算邮资问题(不使用第三方库)
  9. 游戏编程精粹学习 - 一种快速的圆柱棱台相交测试算法
  10. C++istringstream, ostringstream, stringstream的用法