package com.interview.books.leetcodeoj; import com.interview.leetcode.utils.TreeNode; /** * Created_By: stefanie * Date: 14-12-26 * Time: 下午9:02 */ public class LOJ124_BinaryTreeMaximumPathSum { //do pre-order traversal, maxPath = left + right + node.val; //return max singlePath: max(max(left, right) + node.val, 0) int max; public int maxPathSum(TreeNode root) { max = Integer.MIN_VALUE; visitTree(root); return max; } public int visitTree(TreeNode node){ if(node == null) return 0; int left = visitTree(node.left); int right = visitTree(node.right); max = Math.max(max, left + right + node.val); return Math.max(Math.max(left, right) + node.val, 0); } }