10.3. Hard

124. Binary Tree Maximum Path Sum

124. Binary Tree Maximum Path Sum

class Solution:
    def maxPathSum(self, root: TreeNode) -> int:
        self.res = float('-inf')
        self.dfs(root)
        return self.res

    def dfs(self, root):
        if not root:
            return 0
        l = max(0, self.dfs(root.left))
        r = max(0, self.dfs(root.right))
        self.res = max(self.res, l + r + root.val)
        return max(l, r) + root.val

145. Binary Tree Postorder Traversal

145. Binary Tree Postorder Traversal

class Solution:
    def postorderTraversal(self, root: TreeNode) -> List[int]:
        res = []
        self.dfs(root, res)
        return res

    def dfs(self, root, res):
        if not root:
            return
        self.dfs(root.left, res)
        self.dfs(root.right, res)
        res.append(root.val)