前言:

每道题附带动态示意图,提供java、python两种语言答案,力求提供leetcode最优解。

描述:

给定一个非空二叉树,返回其最大路径和。

本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。

示例 1:

输入: [1,2,3]

1
/ \
2 3

输出: 6

示例 2:

输入: [-10,9,20,null,null,15,7]

-10
   / \
  9  20
    /  \
   15   7

输出: 42

思路:

java:

class Solution {
/**
* 最大路径和
*/
private int sum = Integer.MIN_VALUE; public int maxPathSum(TreeNode root) {
maxGain(root);
return sum;
} public int maxGain(TreeNode node) {
if (node == null) {
return 0;
}
// 小于0的权值舍弃,代表不走该节点
int leftGain = Math.max(maxGain(node.left), 0);
int rightGain = Math.max(maxGain(node.right), 0); int pathGain = leftGain + rightGain + node.val;
sum = Math.max(sum, pathGain);
// 返回最大路径,路径被定义为一条从树中任意节点出发,达到任意节点的序列。
return node.val + Math.max(leftGain, rightGain);
}
}

结果:

python:

import sys

class Solution:
def maxPathSum(self, root: TreeNode) -> int:
def max_gain(node: TreeNode) -> int:
nonlocal max_sum
if not node:
return 0
left_gain = max(max_gain(node.left), 0)
right_gain = max(max_gain(node.right), 0) path_gain = left_gain + right_gain + node.val
max_sum = max(max_sum, path_gain) return node.val + max(left_gain, right_gain) # 负无穷
max_sum = float('-inf')
max_gain(root)
return max_sum

结果:

最新文章

  1. ElasticSearch 5学习(1)——安装Elasticsearch、Kibana和X-Pack
  2. underscorejs 源码走读笔记
  3. Apache Lucene(全文检索引擎)—搜索
  4. python学习之——爬取网页信息
  5. php面试题之二——数据结构和算法(高级部分)
  6. 二十二、OGNL的一些其他操作
  7. jmap(Memory Map For Java)
  8. xdebug及webgrind的联用
  9. WHY IE AGAIN? - string.charAt(x) or string[x]?
  10. JAVA基础--方法的重写overwrite 和 重载overload
  11. Ubuntu下编译Bilibili/ijkplayer
  12. DxPackNet 2.视频截图和捕捉帧图片
  13. PYTHON风格规范-Google 开源项目风格指南
  14. 实现自动SSH连接
  15. Input标签使用整理
  16. Luogu P2575 高手过招
  17. Source Insight 中文注释为乱码解决办法(完美解决,一键搞定)
  18. spring 事务回滚。
  19. ubuntu18换国内源
  20. numpy 基于现有数据创建ndarray(from existing data)

热门文章

  1. [转载]【转】教你如何实现linux和Windows之间的文件共享,samba的安
  2. java遍历一个实体
  3. [JQuery] JQuery学习笔记
  4. JDBC事务的简单使用
  5. linux磁盘分区、格式化、挂载
  6. Json模块和Pickle模块的使用
  7. 逆向分析objc,所有类的信息都能在动态调试中获取。
  8. this绑定方式总结
  9. JVM的内存回收机制
  10. Reverse proxy