Binary Tree Maximum Path Sum

来源:互联网 发布:软件企业培训费 编辑:程序博客网 时间:2024/04/29 12:02

Binary Tree Maximum Path Sum:

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.

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */#define INVALID_MIN -10000class Solution {public:    int maxPathSum(TreeNode *root) {        // Start typing your C/C++ solution below        // DO NOT write int main() function            if ( !root ) return 0;int sum=0,path=0;solve(root,sum,path);return sum;    }void solve(TreeNode* root,int& sum,int& path){if ( !root ){sum=path=INVALID_MIN;return;}int lsum=0,lpath=0;solve(root->left,lsum,lpath);int rsum=0,rpath=0;solve(root->right,rsum,rpath);path=max(root->val,max(lpath,rpath)+root->val);sum=max(max(lsum,rsum),lpath+rpath+root->val);sum=max(sum,path);}};


原创粉丝点击