博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode-Tree]Binary Tree Maximum Path Sum
阅读量:6247 次
发布时间:2019-06-22

本文共 1099 字,大约阅读时间需要 3 分钟。

Binary Tree Maximum Path Sum

Given a binary tree, find the maximum path sum.

For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root.

For example:

Given the below binary tree,

1  / \ 2   3

Return 6.

1.解题思路

分析对于每一个根节点,可能的路径和有:左子树的最大路径和+该节点val,右子树的最大路径和+该节点val,只取该节点val,左子树的最大路径和+该节点val+右子树的最大路径和,我们需要取四个中最大的一个即可。但是本题的难点在于,使用递归实现,但是前面的第四种情况不能作为递归函数的返回值,所以我们需要定义两个max值,singleMax代表单边路径的最大值,用于递归;curMax用于singleMax和回路Max的较大值。

2.代码

public class Solution {    int max=Integer.MIN_VALUE;    public int maxPathSum(TreeNode root) {        helper(root);        return max;    }    private int helper(TreeNode root){        if(root==null) return 0;        int leftsum=helper(root.left);        int rightsum=helper(root.right);        int singlemax=Math.max(Math.max(leftsum+root.val,rightsum+root.val),root.val);        int curmax =Math.max(singlemax,leftsum+root.val+rightsum);        max=Math.max(max,curmax);        return singlemax;    }}

转载地址:http://zvlia.baihongyu.com/

你可能感兴趣的文章
程序员写了一段注释, 第二天惨被公司开除, 公司巧妙回怼
查看>>
8.eclipse 安装 lombook插件
查看>>
Maven项目中使用本地JAR包方案4
查看>>
如何利用XMind创建概念图
查看>>
ldap接触(3)之LDAP特定错误以及错误一览表
查看>>
Zookeeper的功能以及工作原理
查看>>
朝花夕拾之Oracle11g 表分区
查看>>
本分类说明 -- django
查看>>
Android Binder IPC分析
查看>>
mysql分隔字符串,并将分隔字符串作为新列
查看>>
图学java基础篇之集合
查看>>
Tomcat源码分析------ 架构
查看>>
如何分析并策划好网站
查看>>
解决Skype一台电脑登陆多个账号的问题
查看>>
Gradle构建卡住问题解决
查看>>
linux使用cron任务定时执行数据库操作
查看>>
实验11 原始套接字
查看>>
C#配置Properties.Setting
查看>>
Tomcat:为Filter过滤器设置参数
查看>>
在线编辑、展示HTML、CSS、Javascript的网站
查看>>