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