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