package problems.medium;
import problems.utils.TreeNode;
import java.util.Stack;
/**
* Created by sherxon on 1/4/17.
*/
public class BinarySearchTreeIterator {
TreeNode root= new TreeNode(-1);
Stack<TreeNode> stack;
public BinarySearchTreeIterator(TreeNode root) {
this.root.left=root;
this.stack=new Stack<>();
TreeNode x=this.root;
while(x!=null){
stack.add(x);
x=x.left;
}
}
/** @return whether we have a next smallest number */
public boolean hasNext() {
return stack.size()>1;
}
/** @return the next smallest number */
public int next() {
TreeNode r= stack.pop();
if(stack.size()>0){
TreeNode peek=stack.peek();
peek.left=r.right;
TreeNode temp=peek.left;
while(temp!=null){
stack.add(temp);
temp=temp.left;
}
}
return r.val;
}
}