二叉树最大路径和
来源:互联网 发布:网络作家收入怎么收税 编辑:程序博客网 时间:2024/05/22 03:47
题目描述
给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)
思路
首先我们分析一下对于指定某个节点为根时,最大的路径和有可能是哪些情况。第一种是左子树的路径加上当前节点,第二种是右子树的路径加上当前节点,第三种是左右子树的路径加上当前节点(相当于一条横跨当前节点的路径),第四种是只有自己的路径。乍一看似乎以此为条件进行自下而上递归就行了,然而这四种情况只是用来计算以当前节点根的最大路径,如果当前节点上面还有节点,那它的父节点是不能累加第三种情况的。所以我们要计算两个最大值,一个是当前节点下最大路径和,另一个是如果要连接父节点时最大的路径和。我们用前者更新全局最大量,用后者返回递归值就行了。
这题虽然简单,还是需要好好理解的。
public class Solution { /* * @param root: The root of binary tree. * @return: An integer */ public int max=Integer.MIN_VALUE; public int maxPathSum(TreeNode root){ findpath(root); return max; } public int findpath(TreeNode root) { // write your code here if(root==null) return 0; int l=findpath(root.left); int r=findpath(root.right); int cursum=Math.max(l,0)+Math.max(0,r)+root.val; max=Math.max(cursum,max); return Math.max(Math.max(l,0),Math.max(r,0))+root.val;//只能返回二叉树的一侧 }}
阅读全文
0 0
- 二叉树最大路径和
- 二叉树最大路径和
- 二叉树最大路径和
- LintCode-二叉树中的最大路径和
- 二叉树中的最大路径和
- 二叉树中的最大路径和
- 题目:二叉树中的最大路径和
- 二叉树中的最大路径和
- 二叉树中的最大路径和
- lintcode,二叉树中的最大路径和
- 二叉树中最大路径和
- Leetcode052--二叉树路径最大和
- 二叉树中的最大路径和
- 二叉树中的最大路径和
- 二叉树中的最大路径和-LintCode
- LintCode 二叉树中的最大路径和
- lintcode--二叉树中的最大路径和
- 二叉树中的最大路径和-LintCode
- jquery判断checkbox是否选中的3种方法
- STN系列之Spatial Transformer Networks
- 单元测试MAVEN引入junit的jar包不起作用
- Unity3D教你制作Bezier和Spine曲线编辑器三
- 资讯精选 | 浅析机器视觉测试系统市场现状
- 二叉树最大路径和
- python笔记----解构和封装
- 基于Innobackupex的增备及恢复
- CentOS 7 64位下MySQL5.7卸载改成MySQL5.6版本(YUM)
- java生成验证码两种方法
- UWP 手绘视频创作工具 “来画Pro” 技术分享系列
- HTML5新特性:FileReader 和 FormData
- 在Linux系统下,cat正常,vim打开乱码
- JavaSE (七)循环控制语句:while、do....while、for,break和continue用法