url :
https://leetcode.com/problems/binary-tree-maximum-path-sum/description/
描述
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.
解题思路:
后续遍历,很简单直接上代码。
代码:
class Solution {
//记录最大值
private int max = -1 << 28;
public int maxPathSum(TreeNode root) {
maxHelper(root);
return max;
}
//后续遍历
private int maxHelper(TreeNode node){
if(node==null) return 0;
int left = maxHelper(node.left);
int right = maxHelper(node.right);
max = Math.max(max,left+right+node.val);
//返回的时候只能返回其中一个分支,这个点也是比较难想到的
int sum = node.val + Math.max(left,right);
return sum < 0 ? 0:sum;
}
}