博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 124. Binary Tree Maximum Path Sum
阅读量:5907 次
发布时间:2019-06-19

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

 

 


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 does not need to go through the root.

For example:

Given the below binary tree,

1      / \     2   3

 

Return 6.

 

 

给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)

要找到二叉树种任意一点到任意一点相加的最大值,分三种情况,

一种是从跟节点左侧的某个点走到跟节点右侧某个点,

第二种是从跟节点左侧的某个点走到跟节点左侧的某个点,

第三种是从跟节点右侧的某个点到跟节点右侧的某个点。

 current只是当前值和左侧最大和右侧最大的三者的比较,culculateSum这个函数的功能是递归求出某个点的左侧路径和右侧路径和自身值的三者的最大值,

max[0]记录某个点左侧路径、右侧路径、自身、左侧加右侧加自身 四者之间的最大值。

 

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public int maxPathSum(TreeNode root) {        int max[] = new int [1];        max[0] = Integer.MIN_VALUE;        culculateSum(root, max);        return max[0];    }        public int culculateSum(TreeNode root, int[] max) {        if (root == null) {            return 0;        }                int left = culculateSum(root.left, max);        int right = culculateSum(root.right, max);                int current = Math.max(root.val, Math.max(root.val + left, root.val + right));        max[0] = Math.max(max[0], Math.max(current, left + root.val + right));        return current;    }}

 

转载于:https://www.cnblogs.com/iwangzheng/p/5776408.html

你可能感兴趣的文章
redis启动警告处理
查看>>
【python初级】010-构造方法,属性和迭代器
查看>>
Textillate.js – 实现动感的 CSS3 文本动画的简单插件(用法详情&只支持现代浏览)...
查看>>
项目 调dubbo接口 异常总结
查看>>
通过Gearman实现MySQL到Redis的数据复制
查看>>
基于swoole扩展的异步redis客户端
查看>>
仿webqq桌面–jquery desktop 2.0
查看>>
数据库与图片完美解决方案
查看>>
Peer certificate cannot be authenticated with known CA certificates
查看>>
推荐几个牛逼的 IDEA 插件
查看>>
数据库中间件 MyCAT 源码分析:【单库单表】插入
查看>>
Java与多线程
查看>>
百度和google高级使用
查看>>
SQLite基础
查看>>
Node.js笔记一
查看>>
手工升级wordpress的方法步骤
查看>>
Python学习day2作业总结
查看>>
JFinal的Model类的二次继承方法
查看>>
jQuery实现自定义checkbox和radio样式
查看>>
手把手教你在VirtualBox中与主机共享文件夹
查看>>