【leetcode 124】 二叉樹中的最大路徑和

# 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章