給定乙個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。
示例 1:
輸入: [1,2,3]
1
/ \2 3
輸出: 6
二叉樹相關的題,大部分都可以用遞迴解決。
本題中任意乙個節點有兩個相關的值需要關注:
一是這個節點作為路徑根節點的值,這個值等於根節點val加左右兒子的值(如果子節點val小於0則加0)這裡左右兒子的值就是它們作為路徑的非根節點時的貢獻值
二是這個節點作為路徑的非根節點的值,這個值等於根節點val加上左右兒子較大的值,這個可以叫做節點的貢獻值(這裡是每一級遞迴需要傳遞的值)
在類中定義了乙個maxsum用於儲存,同類的方法可以實時更新這個變數
這樣在考慮一級遞迴時:
這個節點作為根節點的路徑的最大值=root.val + 左右兒子val和(小於0則加0)
判斷這個最大值和maxsum的關係,大於maxsum則更新
然後返回其作為路徑上非根節點時的最大貢獻值=root.val + 左右兒子的較大值(注意這裡如果兒子的最大值小於0則加0)
遞迴求得是這個節點的貢獻值,但過程中就可以計算以其為根節點的路徑的最大值了
class
solution
public
intgetmaxval
(treenode root)
}
二叉樹最大路徑和 python 二叉樹最大路徑和
1.題目描述 輸入乙個二叉樹層次遍歷的結果,輸出這個二叉樹最大路徑和。路徑不一定從根節點開始和葉子節點結束。只要是連續的路徑就可以。如輸入 10,9,20,null,null,15,7 109 20 15 7 輸出 42 2.首先將乙個陣列還原成乙個二叉樹。然後根絕二叉樹的根節點返回最大路徑和。cl...
演算法 二叉樹中的最大路徑和
路徑 被定義為一條從樹中任意節點出發,沿父節點 子節點連線,達到任意節點的序列。同乙個節點在一條路徑序列中 至多出現一次 該路徑 至少包含乙個 節點,且不一定經過根節點。路徑和 是路徑中各節點值的總和。給你乙個二叉樹的根節點 root 返回其 最大路徑和 輸入 root 1,2,3 輸出 6 解釋 ...
二叉樹最大路徑和
每個節點不可以重複經過求,求二叉樹的最大路徑和。二叉樹如圖 本文採用深度優先演算法解題。假設每個節點都有兩個屬性,s stop c continue s屬性為,該節點及其以下節點的不停止走法最大值。c屬性為在還有路可走的情況下的最大值。舉例說明 node4節點,有兩條路可走 路線一和路線二 路線一意...