給定乙個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。
輸出:6
解析:2—1—3為最大路徑和
輸出:42
解析:15—20—7為最大路徑和
func maxpathsum(root *treenode) int
// 遞迴計算左右子節點的最大貢獻值
// 只有在最大貢獻值大於 0 時,才會選取對應子節點
leftgain := max(maxgain(node.left), 0)
rightgain := max(maxgain(node.right), 0)
// 節點的最大路徑和取決於該節點的值與該節點的左右子節點的最大貢獻值
pricenewpath := node.val + leftgain + rightgain
// 更新答案
maxsum = max(maxsum, pricenewpath)
// 返回節點的最大貢獻值
return node.val + max(leftgain, rightgain)
}maxgain(root)
return maxsum
}func max(x, y int) int
return y
}
以樹種的每個節點為根節點進行遞迴,分別計算左子樹和右子數最大的路徑和,最後取最大值。 二叉樹最大路徑和 python 二叉樹最大路徑和
1.題目描述 輸入乙個二叉樹層次遍歷的結果,輸出這個二叉樹最大路徑和。路徑不一定從根節點開始和葉子節點結束。只要是連續的路徑就可以。如輸入 10,9,20,null,null,15,7 109 20 15 7 輸出 42 2.首先將乙個陣列還原成乙個二叉樹。然後根絕二叉樹的根節點返回最大路徑和。cl...
124 二叉樹中最大路徑求和
給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3 輸出 6 示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42cla...
二叉樹最大路徑和
每個節點不可以重複經過求,求二叉樹的最大路徑和。二叉樹如圖 本文採用深度優先演算法解題。假設每個節點都有兩個屬性,s stop c continue s屬性為,該節點及其以下節點的不停止走法最大值。c屬性為在還有路可走的情況下的最大值。舉例說明 node4節點,有兩條路可走 路線一和路線二 路線一意...