I found the problem in less than a minute using the debugger. It's an amazingly useful tool.

Code:
    if (left != NULL)
    {
        postorder(*a.left);
    }
    if (right != NULL)
    {
        postorder(*a.right);
    }
You want to be checking a.left and a.right for NULL, not left and right.