Iterative postorder with a single stack. Uses curr and lastVisited pointers to avoid revisiting the right subtree.