LeetCode 124.二叉樹中的最大路徑和
阿新 • • 發佈:2020-11-21
給定一個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,沿父節點-子節點連線,達到任意節點的序列。
該路徑至少包含一個節點,且不一定經過根節點。
示例 1:
輸入:[1,2,3]
1
/ \
2 3
輸出:6
示例 2:
輸入:[-10,9,20,null,null,15,7]
-10
/
9 20
/
15 7
輸出:42
class Solution: def __init__(self): self.maxSum = -float('inf') def maxPathSum(self, root: TreeNode) -> int: def maxGain(root): if root is None: return 0 leftGain = max(0, maxGain(root.left)) rightGain = max(0, maxGain(root.right)) self.maxSum = max(self.maxSum, root.val + leftGain + rightGain) return root.val + max(leftGain, rightGain) maxGain(root) return self.maxSum """ 時間複雜度:O(n) 空間複雜度:O(n) 遞迴的入口和出口、返回值,全域性狀態的更新邏輯 """