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* root, int &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
Post a Comment