Easy going - Also has steps to modify for path via leafs
Anonymous User
71
# 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
class Solution:
    def __init__(self):
        self.maxSum=-1000
        
    def maxPathSum(self, root: TreeNode) -> int:
        self.calcMaxPathSum(root)
        return self.maxSum
    
    def calcMaxPathSum(self, node):
        
        if node is None:
            return 0
        
        
        sL = self.calcMaxPathSum(node.left)
        sR = self.calcMaxPathSum(node.right)
        
        passThroughSum = max (node.val + max(sL, sR), node.val)
        inclusiveSum = sL + sR + node.val
        maxSumTillThisNode = max(inclusiveSum, passThroughSum)
        self.maxSum = max(self.maxSum, maxSumTillThisNode)
        return passThroughSum
    
Comments (0)