# # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right
# # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right
classSolution: defpostorderTraversal(self, root: Optional[TreeNode]) -> List[int]: ans = [] st = [(root, False)] while st: thisNode, ifPushed = st.pop() ifnot thisNode: continue if ifPushed: ans.append(thisNode.val) else: st.append((thisNode, True)) st.append((thisNode.right, False)) st.append((thisNode.left, False)) return ans