[LeetCode] 124. 二叉树中的最大路径和
Posted powercai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 124. 二叉树中的最大路径和相关的知识,希望对你有一定的参考价值。
题目链接 : https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/
题目描述:
给定一个非空二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
示例:
示例 1:
输入: [1,2,3]
1
/ 2 3
输出: 6
示例 2:
输入: [-10,9,20,null,null,15,7]
-10
/ 9 20
/ 15 7
输出: 42
思路:
这类题目, 都是求树的高度的延伸版
直接看代码解释
def maxPathSum(self, root: TreeNode) -> int:
self.res = float("-inf")
def helper(root):
if not root: return 0
# 右边最大值
left = helper(root.left)
# 左边最大值
right = helper(root.right)
# 和全局变量比较
self.res = max(left + right + root.val, self.res)
# >0 说明都能使路径变大
return max(0, max(left, right) + root.val)
helper(root)
return self.res
java
class Solution
int res = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root)
helper(root);
return res;
private int helper(TreeNode root)
if (root == null) return 0;
int left = helper(root.left);
int right = helper(root.right);
res = Math.max(left + right + root.val, res);
return Math.max(0, Math.max(left, right) + root.val);
以上是关于[LeetCode] 124. 二叉树中的最大路径和的主要内容,如果未能解决你的问题,请参考以下文章