package com.interview.books.svinterview;
import com.interview.leetcode.utils.TreeNode;
import java.util.Iterator;
import java.util.Stack;
/**
* Created_By: stefanie
* Date: 14-12-8
* Time: 下午2:31
*/
public class SV10_BSTIterator implements Iterator<TreeNode>{
private TreeNode _current;
private Stack<TreeNode> _stack;
public SV10_BSTIterator(TreeNode root){
this._current = root;
_stack = new Stack<>();
}
@Override
public boolean hasNext() {
return _current != null || !_stack.empty();
}
@Override
public TreeNode next() {
while(_current != null){
_stack.push(_current);
_current = _current.left;
}
if(!_stack.isEmpty()){
TreeNode node = _stack.pop();
_current = node.right;
return node;
}
return null;
}
@Override
public void remove() {
throw new UnsupportedOperationException("Can delete items during iteration");
}
public static void main(String[] args){
TreeNode root = TreeNode.sampleBST();
SV10_BSTIterator iterator = new SV10_BSTIterator(root);
while(iterator.hasNext()){
System.out.print(iterator.next().val + " ");
}
}
}