标签:style blog http color width art
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
.
For each node like following, there should be four ways existing for max path:
1. Node only
2. L-sub + Node
3. R-sub + Node
4. L-sub + Node + R-sub
注意:函数返回时返回的是left+node, node, right+node中较大的值。而计算全局最大是比较以当前node为根的树和(left+right+node,node, left+node,right+node)之前记录的最大值。
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 int maxPathSum(TreeNode *root) { 13 if (root==NULL)return 0; 14 int max_sum=INT_MIN; 15 pathSum(root,max_sum); 16 return max_sum; 17 18 } 19 int pathSum(TreeNode* root, int& max_sum) 20 { 21 if(root==NULL)return 0; 22 int sum=root->val; 23 int left=pathSum(root->left,max_sum); 24 sum=max(sum,sum+left); 25 int right=pathSum(root->right,max_sum); 26 sum=max(sum,sum+right); 27 max_sum=max(sum,max_sum); 28 return max(root->val,max(left+root->val,right+root->val));//important 29 } 30 };
Binary Tree Maximum Path Sum,布布扣,bubuko.com
标签:style blog http color width art
原文地址:http://www.cnblogs.com/hicandyman/p/3825373.html