Given a binary tree, find the maximum path sum.
The path may start and end at any node in the tree.
For example:
Given the below binary tree,
1 / 2 3
Return 6
.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { int ERROR = -10000; int max; public int maxPathSum(TreeNode root) { // Start typing your Java solution below // DO NOT write main() function max = ERROR; if(root == null) return 0; int ret = maxPathSumHelper(root); if(ret > max) max = ret; return max; } public int maxPathSumHelper(TreeNode root) { if(root == null) return ERROR; int left = maxPathSumHelper(root.left); int right = maxPathSumHelper(root.right); // find out the max sum if(max < left ) max = left; if(max < right) max = right; if(max < (root.val + left + right)) max = root.val + left + right; return Math.max(root.val, Math.max(root.val + left, root.val + right)); } }