题目描述:

解析:
_递归终止条件:
如果root为null,直接返回0。
递归过程:
1.递归求解包含左孩子的以左孩子为根结点的最大路径和maxL,以及包含右孩子的以右孩子为根结点的最大路径和maxR。
2.如果maxL > 0,我们的当前的最大路径和就应该加上maxL。
3.如果maxR > 0,我们的当前的最大路径和就应该加上maxR。
4.最大路径和result取result和当前最大路径和的较大值。
5.该递归函数的返回结果应该是root的值,root的值加上maxL的值,root的值加上maxR的值,这三者间的较大值。
_
class Solution {int result = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {maxSum(root);return result;}private int maxSum(TreeNode root) { //求包含root根节点的最大路径和if (root == null) return 0;int data=root.val;int maxL=maxSum(root.left);if(maxL>0) data+=maxL;int maxR=maxSum(root.right);if(maxR>0) data+=maxR;result = Math.max(result,data); //记录当前树的最大路径和return Math.max(root.val,Math.max(root.val+maxL, root.val+maxR));}}
