package problems.hard; import problems.utils.TreeNode; /** * Created by sherxon on 2/14/17. */ public class BinaryTreeMaximumPathSum { int max = Integer.MIN_VALUE; public static void main(String[] args) { int ll = 1; System.out.println(Math.abs(2147483647 + (long) ll)); } public int maxPathSum(TreeNode root) { if (root == null) return 0; find(root); return max; } int find(TreeNode x) { if (x == null) return 0; int left = Math.max(0, find(x.left)); int right = Math.max(0, find(x.right)); max = Math.max(max, left + right + x.val); x.val = Math.max(left, right) + x.val; return x.val; } }