# 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 maxPathSum(self, root: Optional[TreeNode]) -> int:
self.maxvalue = -10000
self.maxPathSumhelper(root)
return self.maxvalue
def maxPathSumhelper(self,root):
if not root:
return 0
leftmax = self.maxPathSumhelper(root.left)
rightmax = self.maxPathSumhelper(root.right)
self.maxvalue = max(root.val,self.maxvalue, leftmax + rightmax + root.val,leftmax+root.val,rightmax+root.val)
return max(root.val, leftmax+root.val,rightmax+root.val)