Iterative preorder on the sample tree, step by step
===================================================

step | action                          | stack (bottom..top) | output so far
1    | pop 1, visit, push its children | [3 2]               | [1]
2    | pop 2, visit, push its children | [3 5 4]             | [1 2]
3    | pop 4, visit, push its children | [3 5]               | [1 2 4]
4    | pop 5, visit, push its children | [3 7]               | [1 2 4 5]
5    | pop 7, visit, push its children | [3]                 | [1 2 4 5 7]
6    | pop 3, visit, push its children | [6]                 | [1 2 4 5 7 3]
7    | pop 6, visit, push its children | [9 8]               | [1 2 4 5 7 3 6]
8    | pop 8, visit, push its children | [9]                 | [1 2 4 5 7 3 6 8]
9    | pop 9, visit, push its children | []                  | [1 2 4 5 7 3 6 8 9]
