【leetcode】BinaryTreeMaximumPathSum
2,484 views
0
Question :
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
.
Anwser 1 :
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int calLen(TreeNode *root, int &len) { if (root == NULL) { len = 0; return 0; } if (root->left == NULL && root->right == NULL) { len = root->val; return root->val; } int leftPath, rightPath; int leftLen; if (root->left) leftLen = calLen(root->left, leftPath); else { leftLen = INT_MIN; leftPath = 0; } int rightLen; if (root->right) rightLen = calLen(root->right, rightPath); else { rightLen = INT_MIN; rightPath = 0; } len = max(max(leftPath, rightPath) + root->val, root->val); int maxLen = max(root->val, max(leftPath + rightPath + root->val, max(leftPath + root->val, rightPath + root->val))); return max(max(leftLen, rightLen), maxLen); } int maxPathSum(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function int len; return calLen(root, len); } };
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2013-05-01 19:19:56
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!