后序遍历的迭代写法

和室友研究算法时突然忘了怎么写的,甚为恼怒,于是再次记录

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def postorderTraversal(root):
    res = []
    stack = [root]
    while stack:
        node = stack.pop()
        if node:
            res.append(node.val)
            # 先压左,再压右,出栈先右后左
            stack.append(node.left)
            stack.append(node.right)
    return res[::-1] # 整体反转