提交地址:
https://oj.leetcode.com/problems/binary-tree-maximum-path-sum/
说一下思路http://www.cnblogs.com/miloyip/archive/2010/02/25/1673114.html这是编程之美那个题目的另一种解法思路更简单,那个题目求路径节点数,而这个是路径和,这是最简单的一种思路
对于每一个节点:
maxSum :一个属性,最后的值就是它,是他,是他,小哪吒;
max(root)函数返回的是,包含root的到其子树的最大和
max(root)= 最大( max(root.left)+root.val,max(root.right)+root.val,root.val)
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { private int maxSum=Integer.MIN_VALUE; public int maxPathSum(TreeNode root) { if(root==null) return 0; max(root); return maxSum; } public int max(TreeNode root) { if(root==null) return 0; int left=max(root.left); int right=max(root.right); int maxtemp=root.val; if(left>0) maxtemp+=left; if(right>0) maxtemp+=right; if(maxtemp>maxSum) maxSum=maxtemp; return Math.max(0,Math.max(left,right))+root.val; } }