【LeetCode】124. Binary Tree Maximum Path Sum

Given a binary tree, find the maximum path sum.

For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root.

For example:
Given the below binary tree,

       1
      / \
     2   3

 

Return 6.

题解:

  感觉解题思路有点类似于动态规划,一个变量用于表示以此节点为根的最大路径和,另一个变量为全局变量,全局更新最大值

 1 class Solution {
 2 public:
 3     int maxPathSum(TreeNode* root) {
 4         if (!root)
 5             return 0;
 6         int res = INT_MIN;
 7         helper(root, res);
 8         return res;
 9     }
10     
11     int helper(TreeNode* root, int& res) {
12         if (!root)
13             return 0;
14         
15         int lmax = max(helper(root->left, res), 0);
16         int rmax = max(helper(root->right, res), 0);
17         res = max(lmax + rmax + root->val, res);
18         return max(lmax, rmax) + root->val;
19     }
20 };

 

posted @ 2018-04-14 15:24  Vincent丶丶  阅读(157)  评论(0编辑  收藏  举报