题目链接 : 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);
}
}
原文地址:https://www.cnblogs.com/powercai/p/11172070.html
时间: 2024-10-13 22:26:09