题目
标题和出处
标题:二叉搜索树迭代器
难度
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:
输入:
["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{]}