二叉搜索树题目:二叉搜索树迭代器

题目

标题和出处

标题:二叉搜索树迭代器

出处:173. 二叉搜索树迭代器

难度

4 级

题目描述

要求

实现 BSTIterator \texttt{BSTIterator} BSTIterator 类,表示一个按中序遍历二叉搜索树的迭代器:

  • BSTIterator(TreeNode   root) \texttt{BSTIterator(TreeNode root)} BSTIterator(TreeNode root) 初始化 BSTIterator \texttt{BSTIterator} BSTIterator 类的一个对象。二叉搜索树的根结点 root \texttt{root} root 会作为构造函数的一部分给出。指针应初始化为一个不存在于二叉搜索树中且小于二叉搜索树中的任何元素的数字。
  • boolean   hasNext() \texttt{boolean hasNext()} boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true \texttt{true} true,否则返回 false \texttt{false} false
  • int   next() \texttt{int next()} int next() 将指针向右移动,然后返回指针处的数字。

注意,指针初始化为一个不存在于二叉搜索树中的数字,所以对 next() \texttt{next()} next() 的首次调用将返回二叉搜索树中的最小元素。

你可以假设 next() \texttt{next()} next() 调用总是有效的,也就是说,当调用 next() \texttt{next()} next() 时,中序遍历中至少存在一个下一个数字。

示例

示例 1:

示例 1

输入:
["BSTIterator",   "next",   "next",   "hasNext",   "next",   "hasNext",   "next",   "hasNext",   "next",   "hasNext"] \texttt{["BSTIterator", "next", "next", "hasNext", "next", "hasNext", "next", "hasNext", "next", "hasNext"]} ["BSTIterator", "next", "next", "hasNext", "next", "hasNext", "next", "hasNext", "next", "hasNext"]
[[[7,   3,   15,   null,   null,   9,   20]],   [],   [],   [],   [],   [],   [],   [],   [],   []] \texttt{[[[7, 3, 15, null, null, 9, 20]], [], [], [], [], [], [], [], [], []]} [[[7, 3, 15, null, null, 9, 20]], [], [], [], [], [], [], [], [], []]
输出:
[null,   3,   7,   true,   9,   true,   15,   true,   20,   false] \texttt{[null, 3, 7, true, 9, true, 15, true, 20, false]} [null, 3, 7, true, 9, true, 15, true, 20, false]
解释:
BSTIterator   bSTIterator   =   new   BSTIterator([7,   3,   15,   null,   null,   9,   20]); \texttt{BSTIterator bSTIterator = new BSTIterator([7, 3, 15, null, null, 9, 20]);} BSTIterator bSTIterator = new BSTIterator([7, 3, 15, null, null, 9, 20]);
bSTIterator.next(); \texttt{bSTIterator.next();} bSTIterator.next(); // 返回 3 \texttt{3} 3
bSTIterator.next(); \texttt{bSTIterator.next();} bSTIterator.next(); // 返回 7 \texttt{7} 7
bSTIterator.hasNext(); \texttt{bSTIterator.hasNext();} bSTIterator.hasNext(); // 返回 True \texttt{True} True
bSTIterator.next(); \texttt{bSTIterator.next();} bSTIterator.next(); // 返回 9 \texttt{9} 9
bSTIterator.hasNext(); \texttt{bSTIterator.hasNext();} bSTIterator.hasNext(); // 返回 True \texttt{True} True
bSTIterator.next(); \texttt{bSTIterator.next();} bSTIterator.next(); // 返回 15 \texttt{15} 15
bSTIterator.hasNext(); \texttt{bSTIterator.hasNext();} bSTIterator.hasNext(); // 返回 True \texttt{True} True
bSTIterator.next(); \texttt{bSTIterator.next();} bSTIterator.next(); // 返回 20 \texttt{20} 20
bSTIterator.hasNext(); \texttt{bSTIterator.hasNext();} bSTIterator.hasNext(); // 返回 False \texttt{False} False

数据范围

  • 树中结点数目在范围 [1,   10 5 ] \texttt{[1, 10}^\texttt{5}\texttt{]}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟大的车尔尼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值