实现一个BST的迭代器
也就是说左节点的值小于根,右节点的值大于根
import java.util.Stack;
/**
* Created by dezhonger on 2020/01/24
*
* @author dezhonger
* @since 2020/01/24
* Leetcode173
*/
public class BSTIterator {
Stack<TreeNode> stack;
public BSTIterator(TreeNode root) {
stack = new Stack<>();
fill(root);
}
private void fill(TreeNode root) {
while (root != null) {
stack.add(root);
root = root.left;
}
}
/** @return the next smallest number */
public int next() {
TreeNode pop = stack.pop();
fill(pop.right);
return pop.val;
}
/** @return whether we have a next smallest number */
public boolean hasNext() {
return !stack.isEmpty();
}
}