关闭

Binary Tree Maximum Path Sum

217人阅读 评论(0) 收藏 举报
分类:
/**
 * 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 maxPathSum(TreeNode* root) 
    {
        int res = INT_MIN;
        dfs(root,res);
        return res;
    }
    int dfs(TreeNode* root,int & res)
    {
        if (!root)
            return 0;
        int left = dfs(root->left,res);
        int right = dfs(root->right,res);
        int cur = root->val + (left > 0 ? left : 0) + (right > 0 ? right : 0);
        res = max(res,cur);
        return root->val + max(max(left,right),0);
    }
};
参考了 http://blog.csdn.net/linhuanmars/article/details/22969069
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20068次
    • 积分:603
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:78篇
    • 译文:0篇
    • 评论:5条