def post_order_iterative_one_stack(node):
    if node == None:
        return
    stack1 = Stack()
    stack1.push(node)
    prev = None
    while not stack1.is_empty():
        curr = stack1.top()
        if (prev == None or prev.right == curr or prev.left ==curr):
            # go down the Tree
            if curr.left != None:
                stack1.push(curr.left)
            elif curr.right != None:
                stack1.push(curr.right)
            else:
                print stack1.pop()
        elif curr.left == prev:
            if curr.right != None:
                stack1.push(curr.right)
            else:
                print stack1.pop()

        elif curr.right == prev:
            print stack1.pop()
        prev = curr