1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| public class BSTIterator {
private Stack<TreeNode> stack;
public BSTIterator(TreeNode root) { stack = new Stack<TreeNode>(); while (root != null) { stack.push(root); root = root.left; } }
public boolean hasNext() { return !stack.isEmpty(); }
public int next() { int result = Integer.MAX_VALUE; if (!stack.isEmpty()) { TreeNode node = stack.pop(); result = node.val; if (node.right != null) { node = node.right; while (node != null) { stack.push(node); node = node.left; } } }
return result; } }
|