Leetcode052--二叉树路径最大和

来源:互联网 发布:windows安装python2.7 编辑:程序博客网 时间:2024/06/05 16:54

一、原题


Given a binary tree, find the maximum path sum.

The path may start and end at any node in the tree.

For example:
Given the below binary tree,

       1      / \     2   3


Return6.




二、中文



找到二叉树中任意路径的的和的最大值



三、举例



比如上的的二叉树,其最大值就是123的和也就是6



四、思路



从一个结点开始,分别找到它的两条子路径的的最大的和,对每个子结点来说,也是这样,这就形成的递归



五、程序


/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    int max;    public int maxPathSum(TreeNode root) {        max = Integer.MIN_VALUE;        maxPathDown(root);        return max;        }    public int maxPathDown(TreeNode node){        if(node == null){            return 0;        }        //选出左边和右边的最大的值,然后进行相加        int left = Math.max(0, maxPathDown(node.left));        int right = Math.max(0, maxPathDown(node.right));        max = Math.max(max, left + right + node.val);                //得到该结点和左边或者右边比较大那个的和        return Math.max(left, right) + node.val;    }}


原创粉丝点击