class Solution {
public:
int singleMax(TreeNode *root)
{
if(root == NULL)
return 0;
int ls = singleMax(root->left);
int rs = singleMax(root->right);
return max(ls,rs) + root->val;
}
int maxPathSum(TreeNode *root) {
if(root== NULL)
return 0 ;
int lm = maxPathSum(root->left);
int rm = maxPathSum(root->right);
int lsigleMax = singleMax(root->left);
int rsigleMax = singleMax(root->right);
return max(max(lm,rm),lsigleMax+rsigleMax+root->val);
}
};
public:
int singleMax(TreeNode *root)
{
if(root == NULL)
return 0;
int ls = singleMax(root->left);
int rs = singleMax(root->right);
return max(ls,rs) + root->val;
}
int maxPathSum(TreeNode *root) {
if(root== NULL)
return 0 ;
int lm = maxPathSum(root->left);
int rm = maxPathSum(root->right);
int lsigleMax = singleMax(root->left);
int rsigleMax = singleMax(root->right);
return max(max(lm,rm),lsigleMax+rsigleMax+root->val);
}
};