题目描述:
    image.png
    image.png
    解析:
    _递归终止条件:
    如果root为null,直接返回0。
    递归过程:
    1.递归求解包含左孩子的以左孩子为根结点的最大路径和maxL,以及包含右孩子的以右孩子为根结点的最大路径和maxR。
    2.如果maxL > 0,我们的当前的最大路径和就应该加上maxL。
    3.如果maxR > 0,我们的当前的最大路径和就应该加上maxR。
    4.最大路径和result取result和当前最大路径和的较大值。
    5.该递归函数的返回结果应该是root的值,root的值加上maxL的值,root的值加上maxR的值,这三者间的较大值。

    _

    1. class Solution {
    2. int result = Integer.MIN_VALUE;
    3. public int maxPathSum(TreeNode root) {
    4. maxSum(root);
    5. return result;
    6. }
    7. private int maxSum(TreeNode root) { //求包含root根节点的最大路径和
    8. if (root == null) return 0;
    9. int data=root.val;
    10. int maxL=maxSum(root.left);
    11. if(maxL>0) data+=maxL;
    12. int maxR=maxSum(root.right);
    13. if(maxR>0) data+=maxR;
    14. result = Math.max(result,data); //记录当前树的最大路径和
    15. return Math.max(root.val,Math.max(root.val+maxL, root.val+maxR));
    16. }
    17. }