leetcode124 二叉树中的最大路径和-dp

题目

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

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

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

示例

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

输出:42

解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

解析
go 复制代码
func maxPathSum(root *TreeNode) int {
	ans := math.MinInt
	var dfs func(*TreeNode) int
	dfs = func(node *TreeNode) int {
		if node == nil {
			return 0 // 没有节点,和为0
		}
		leftMaxVal := dfs(node.Left)                         // 左子树最大链和
		rightMaxVal := dfs(node.Right)                       // 右子树最大链和
		ans = max(ans, leftMaxVal+rightMaxVal+node.Val)      // 两条链拼成路径
		return max(max(leftMaxVal, rightMaxVal)+node.Val, 0) // 当前子树最大链和
	}
	dfs(root)
	return ans
}
相关推荐
ai.Neo23 分钟前
牛客网NC22015:最大值和最小值
数据结构·c++·算法
Swift社区1 小时前
LeetCode 高频题实战:如何优雅地序列化和反序列化字符串数组?
算法·leetcode·职场和发展
徐子童2 小时前
《从零开始入门递归算法:搜索与回溯的核心思想 + 剑指Offer+leetcode高频面试题实战(含可视化图解)》
算法
天宫风子2 小时前
抽象代数小述(二之前)
经验分享·笔记·算法·生活·抽象代数
向上的车轮2 小时前
“傅里叶变换算法”来检测纸箱变形的简单示例
算法
九亿AI算法优化工作室&3 小时前
乡村地区无人机医药配送路径规划与优化仿真
人工智能·算法·matlab·回归
米粉03053 小时前
算法图表总结:查找、排序与递归(含 Mermaid 图示)
数据结构·算法·排序算法
人类发明了工具3 小时前
【优化算法】协方差矩阵自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)
线性代数·算法·矩阵·cma-es
黑色的山岗在沉睡3 小时前
LeetCode100.4 移动零
数据结构·算法·leetcode
方博士AI机器人4 小时前
算法与数据结构 - 二叉树结构入门
数据结构·算法·二叉树