解题思路
使用一个ArrayList
保存按中序遍历顺序的节点,因为二叉搜索树按中序遍历的结果是升序的
再定义一个index = -1
,先判断索引index + 1 < nodes.size()
是否合法
合法则next()
返回ArrayList
对应索引index + 1
的元素
代码
class BSTIterator {
ArrayList<Integer> nodes = new ArrayList<>();
int index = -1;
public BSTIterator(TreeNode root) {
dfs(root);
}
public int next() {
return nodes.get(++index);
}
public boolean hasNext() {
return index + 1 < nodes.size();
}
private void dfs(TreeNode root) {
if (root == null) {
return;
}
dfs(root.left);
nodes.add(root.val);
dfs(root.right);
}
}