当前位置: 首页 > news >正文

二叉树中的最大路径和-递归

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和 。

示例 1:

在这里插入图片描述

输入:root = [1,2,3]
输出:6
解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6
示例 2:

在这里插入图片描述

输入:root = [-10,9,20,null,null,15,7]
输出:42
解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

提示:

树中节点数目范围是 [1, 3 * 1 0 4 10^4 104]
-1000 <= Node.val <= 1000

class TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightclass Solution:def __init__(self):self.maxSum = float("-inf")def maxPathSum(self, root: TreeNode) -> int:def maxGain(node):if not node:return 0# 递归计算左右子节点的最大贡献值# 只有在最大贡献值大于 0 时,才会选取对应子节点leftGain = max(maxGain(node.left), 0)rightGain = max(maxGain(node.right), 0)#当前节点的最大路径和等于左右子节点的贡献值与该节点值的和priceNewpath = node.val + leftGain + rightGain# 更新答案self.maxSum = max(self.maxSum, priceNewpath)# 返回节点的最大贡献值return node.val + max(leftGain, rightGain)maxGain(root)return self.maxSumif __name__ == '__main__':s = Solution()print(s.maxPathSum(TreeNode(-10, TreeNode(30), TreeNode(20, TreeNode(15), TreeNode(7)))))

最大的路径和肯定是一条包含节点左右子树的路径,这个节点是这个路径的根节点(23,25行),但除了这个节点以外,路径上的其他节点只能有一棵子树(28行)

http://www.lryc.cn/news/139202.html

相关文章:

  • Python if-else 速记
  • Python使用内置的json模块来处理JSON数据
  • 亿赛通电子文档安全管理系统 RCE漏洞
  • 信息安全面试题合集
  • vue 简单实验 自定义组件 传参数 props
  • 目标检测笔记(十一):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
  • PID直观感受简述
  • Tomcat运行后localhost:8080访问自己编写的网页
  • 传感网应用开发1+X实训室建方案
  • PDF校对:让您的文件无瑕疵
  • SpringBoot--解决空字符串转枚举异常
  • Redis的常用数据类型详解
  • jpa里IdentityGenerator和IncrementGenerator的区别
  • 基于element UI 实现 table 列 拖拽
  • (GPT、GEE)遥感云大数据、洪涝灾害监测、红树林遥感制图、河道轮廓监测、洪涝灾害监测、GRACE重力卫星、源遥感影像
  • vue中实现将页面或者div内容导出为pdf格式
  • Ubuntu 配置国内源
  • 分布式核心知识
  • 【JMeter】常用线程组设置策略
  • 【数据结构】回溯算法公式化解题 leetcode经典题目带刷:全排列、组合、子集
  • WPF基础入门-Class3-WPF数据模板
  • js将搜索的关键字加颜色
  • Docker安装Oracle数据库打开、链接速度很慢
  • 学生分班查询系统的创建与使用指南
  • 全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!
  • ffmpeg
  • CH03_代码的坏味道(下)
  • journal日志导致服务器磁盘满
  • “Go程序员面试笔试宝典”复习便签
  • 数组的度(指数组里任一元素出现频数的最大值)