The iterative version (stack + pointer) is quite hard and unintuitive. Esp the post-order traversal which requires one more pointer.
Full binary tree: either 0 or 2 children
Complete binary tree: all but the last level have 2 children (max number of nodes); the last level filled from left to right
traversal
storage