Given a binary tree, find the maximum path sum.
The path may start and end at any node in the tree.
For example:
Given the below binary tree,
1 / \ 2 3
Return 6
.
Show Tags Have you met this question in a real interview?
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxroute(TreeNode* root) { if(root==NULL) return 0; int left=maxroute(root->left); int right=maxroute(root->right); int tmp=left>right?left:right; res=(root->val)>res?root->val:res; if(tmp>left+right&&root->val+tmp>res) res=root->val+tmp; else if(root->val+left+right>res) res=root->val+left+right; return (tmp>0?root->val+tmp:root->val); } int maxPathSum(TreeNode* root) { if (root==NULL) return 0; if(root->left==NULL&&root->right==NULL) return root->val; res=root->val; int cc= maxroute( root); return res; } int res; };