Given a non-empty 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.
Example 1:
Input: [1,2,3] 1 / 2 3 Output: 6
Example 2:
Input: [-10,9,20,null,null,15,7] -10 / 9 20 / 15 7 Output: 42
递归
int re ; public int maxPathSum(TreeNode root) { re = Integer.MIN_VALUE; help(root); return re; } private int help(TreeNode root){ if(root ==null){ return 0; } int left = help(root.left); left = left>0?left:0; int right = help(root.right); right = right>0?right:0; int v = left+right+root.val; re = re>v?re:v; return left>right?(left+root.val):(right+root.val); }