class Solution: def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]: def recur(cur): if not cur: return recur(cur.left) recur(cur.right) res.append(cur.val) ## 其实这里不用判断root也行,是吧?因为直接返回的res也是空列表 res = [] recur(root) return res
使用局部变量的方法,获取到两个子树的信息后再统一处理
class Solution: def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]: if not root: return [] left = self.postorderTraversal(root.left) right = self.postorderTraversal(root.right) res = [] res.extend(left) res.extend(right) res.append(root.val) return res
class Solution: def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]: if not root: return [] stack = [] stack.append(root) res = [] while(len(stack)>0): cur = stack.pop() res.append(cur.val) if cur.left: stack.append(cur.left) if cur.right: stack.append(cur.right) return res[::-1] # 注意逆序返回