124. Binary Tree Maximum Path Sum

一、题目

  1、审题

  2、分析

    给出一棵二叉树,求一条路径使得其通过的节点数值和最大为多少。

 

 二、解答

  1、思路: 

    方法一、

      ①、通过递归 求得 root 左子树的最大和,root 右子树的最大和;

      ②、采用一个全局变量记录最大节点数之和;

      ③、跳出递归条件为 root == null;

    int maxValue ;
    public int maxPathSum(TreeNode root) {
        maxValue = Integer.MIN_VALUE;
        maxPathDown(root);
        return maxValue;
    }

    private int maxPathDown(TreeNode root) {
        
        if(root == null)
            return 0;
        int left = Math.max(0, maxPathDown(root.left)); // 左子树的最大路径和
        int right = Math.max(0, maxPathDown(root.right)); // 右子树的最大路径和
        maxValue = Math.max(maxValue, left + right + root.val);
        return Math.max(left, right) + root.val; // 子树,只能取一条叉
    }

 

posted @ 2018-10-07 20:46  skillking2  阅读(100)  评论(0编辑  收藏  举报