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 };