1: // @author Frank M. Carrano, Timothy M. Henry
2: // @version 5.0
4: public void iterativeInorderTraverse()
5: {
6: StackInterface<BinaryNode<T>> nodeStack = new LinkedStack<>();
7: BinaryNode<T> currentNode = root;
9: while (!nodeStack.isEmpty() || (currentNode != null))
10: {
11: // Find leftmost node with no left child
12: while (currentNode != null)
13: {
14: nodeStack.push(currentNode);
15: currentNode = currentNode.getLeftChild();
16: } // end while
18: // Visit leftmost node, then traverse its right subtree
19: if (!nodeStack.isEmpty())
20: {
21: BinaryNode<T> nextNode = nodeStack.pop();
22: // Assertion: nextNode != null, since nodeStack was not empty
23: // before the pop
24: System.out.println(nextNode.getData());
25: currentNode = nextNode.getRightChild();
26: } // end if
27: } // end while
28: } // end iterativeInorderTraverse