# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def maxPathSum(self, root: TreeNode) -> int:
self.ans = float("-inf")
def func(root):
if not root: return 0
left = func(root.left)
right = func(root.right)
# 所包含路徑的最大值(有可能爲0),所以我們就每輪都比較並記錄,self.maxsum與左子樹與右子樹的最大值加上當前節點的值val
self.ans = max(self.ans,left+right+root.val)
# 本題必須要借用返回值來在每一層遞歸中比較路徑的大小,因爲如果不將這個路徑的大小隨着函數返回的話,外部變量self.maxsum將會無法每一輪比較和更新。
return max(0,max(left,right)+root.val)
func(root)
return self.ans
【leetcode 124】 二叉樹中的最大路徑和
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.