class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def get_max_tree_path_sum(root: TreeNode) -> int:
max_answer = float("-inf")
def DFS(node: TreeNode) -> int:
nonlocal max_answer
if not node:
return 0
left_sum = DFS(node.left)
right_sum = DFS(node.right)
s = max(0, left_sum, right_sum)
current_sum = node.val + s
max_answer = max(max_answer, current_sum)
return current_sum
DFS(root)
return max_answer
Y2xhc3MgVHJlZU5vZGU6CiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsPTAsIGxlZnQ9Tm9uZSwgcmlnaHQ9Tm9uZSk6CiAgICAgICAgc2VsZi52YWwgPSB2YWwKICAgICAgICBzZWxmLmxlZnQgPSBsZWZ0CiAgICAgICAgc2VsZi5yaWdodCA9IHJpZ2h0CgoKZGVmIGdldF9tYXhfdHJlZV9wYXRoX3N1bShyb290OiBUcmVlTm9kZSkgLT4gaW50OgogICAgbWF4X2Fuc3dlciA9IGZsb2F0KCItaW5mIikKCiAgICBkZWYgREZTKG5vZGU6IFRyZWVOb2RlKSAtPiBpbnQ6CiAgICAgICAgbm9ubG9jYWwgbWF4X2Fuc3dlcgogICAgICAgIGlmIG5vdCBub2RlOgogICAgICAgICAgICByZXR1cm4gMAoKICAgICAgICBsZWZ0X3N1bSA9IERGUyhub2RlLmxlZnQpCiAgICAgICAgcmlnaHRfc3VtID0gREZTKG5vZGUucmlnaHQpCgogICAgICAgIHMgPSBtYXgoMCwgbGVmdF9zdW0sIHJpZ2h0X3N1bSkKCiAgICAgICAgY3VycmVudF9zdW0gPSBub2RlLnZhbCArIHMKCiAgICAgICAgbWF4X2Fuc3dlciA9IG1heChtYXhfYW5zd2VyLCBjdXJyZW50X3N1bSkKCiAgICAgICAgcmV0dXJuIGN1cnJlbnRfc3VtCgogICAgREZTKHJvb3QpCiAgICByZXR1cm4gbWF4X2Fuc3dlcg==