code
class Solution {
public:
int max_ans = INT_MIN;
int solve(TreeNode *root){
if (!root) {
return 0;
}
int left_ans = maxPathSum(root->left);
int right_ans = maxPathSum(root->right);
max_ans = max(max_ans,root->val);
max_ans = max(max_ans,left_ans+root->val);
max_ans = max(max_ans,right_ans+root->val);
max_ans = max(max_ans,root->val + left_ans + right_ans );
return max(root->val,max(left_ans + root->val, right_ans + root->val));
}
int maxPathSum(TreeNode* root) {
solve(root);
return max_ans;
}
};