Iterative postorder with one stack, step by step ================================================ step | action | stack (bottom..top) | output so far 1 | push 1 | [1] | [] 2 | push 2 | [1 2] | [] 3 | push 4 | [1 2 4] | [] 4 | pop 4, visit | [1 2] | [4] 5 | peek 2: right child 5 not done, go right | [1 2] | [4] 6 | push 5 | [1 2 5] | [4] 7 | push 7 | [1 2 5 7] | [4] 8 | pop 7, visit | [1 2 5] | [4 7] 9 | pop 5, visit | [1 2] | [4 7 5] 10 | pop 2, visit | [1] | [4 7 5 2] 11 | peek 1: right child 3 not done, go right | [1] | [4 7 5 2] 12 | push 3 | [1 3] | [4 7 5 2] 13 | peek 3: right child 6 not done, go right | [1 3] | [4 7 5 2] 14 | push 6 | [1 3 6] | [4 7 5 2] 15 | push 8 | [1 3 6 8] | [4 7 5 2] 16 | pop 8, visit | [1 3 6] | [4 7 5 2 8] 17 | peek 6: right child 9 not done, go right | [1 3 6] | [4 7 5 2 8] 18 | push 9 | [1 3 6 9] | [4 7 5 2 8] 19 | pop 9, visit | [1 3 6] | [4 7 5 2 8 9] 20 | pop 6, visit | [1 3] | [4 7 5 2 8 9 6] 21 | pop 3, visit | [1] | [4 7 5 2 8 9 6 3] 22 | pop 1, visit | [] | [4 7 5 2 8 9 6 3 1]