Binary Tree Maximum Path Sum

// https://leetcode.com/problems/binary-tree-maximum-path-sum/

A path in a binary tree is a sequence of nodes where each pair of adjacent nodes in the sequence has an edge connecting them. A node can only appear in the sequence at most once. Note that the path does not need to pass through the root.

The path sum of a path is the sum of the node's values in the path.

Given the root of a binary tree, return the maximum path sum of any non-empty path.

class Solution {
public:    
    //for preveneting overflow:
    int N = INT_MIN/4;
    int help(TreeNode* rootint &ans){
        if(!root) return N;

        //find left and right for 3 comaprsion:
        int l = help(root->left, ans);
        int r = help(root->right, ans);

        //comapre for 3 cases:
        int a = max(l, r);
        int b = l + r + root->val;
        int c = a + root->val;

        ans = max(ans, max(c, max(a,b)));

        //for top: only l + root || r + root || root: 
        return max(c, root->val);
 
    }

    int maxPathSum(TreeNode* root) {
        int ans = INT_MIN;
        return max(ans, help(root, ans));
    }
};


Comments

Popular Posts