树的最大路径和

来源:互联网 发布:淘宝商品资质图片 编辑:程序博客网 时间:2024/06/09 13:44
/** *  * 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 max_sum;//记录最大值的路径值            int maxPathSum(TreeNode* root) {                max_sum = INT_MIN;                dfs(root);                return max_sum;                    }            int dfs(TreeNode *root)            {                if(root == NULL)                {                    return 0;                }                int l = dfs(root->left);                int r = dfs(root->right);                //计算当前位置的最大路径值                int sum = root->val;                if(l > 0) sum += l;                if(r > 0) sum += r;                max_sum = max(max_sum,sum);                //返回倒上一层只有一个路径的和,取左右两边最大的值,并且该值大于0                return max(r,l) > 0 ? max(r,l) + root->val : root->val;            }};

1 0