演算法 二叉樹中的最大路徑和

2021-10-20 02:21:57 字數 828 閱讀 3065

路徑 被定義為一條從樹中任意節點出發,沿父節點-子節點連線,達到任意節點的序列。同乙個節點在一條路徑序列中 至多出現一次 。該路徑 至少包含乙個 節點,且不一定經過根節點。

路徑和 是路徑中各節點值的總和。

給你乙個二叉樹的根節點 root ,返回其 最大路徑和 。

輸入:root = [1,2,3]

輸出:6

解釋:最優路徑是 2 -> 1 -> 3 ,路徑和為 2 + 1 + 3 = 6

class solution 

public int maxgain(treenode node)

// 遞迴計算左右子節點的最大貢獻值

// 只有在最大貢獻值大於 0 時,才會選取對應子節點

int leftgain = math.max(maxgain(node.left), 0);

int rightgain = math.max(maxgain(node.right), 0);

// 節點的最大路徑和取決於該節點的值與該節點的左右子節點的最大貢獻值

int pricenewpath = node.val + leftgain + rightgain;

// 更新答案

maxsum = math.max(maxsum, pricenewpath);

// 返回節點的最大貢獻值

return node.val + math.max(leftgain, rightgain);}}

參考:

二叉樹最大路徑和 python 二叉樹最大路徑和

1.題目描述 輸入乙個二叉樹層次遍歷的結果,輸出這個二叉樹最大路徑和。路徑不一定從根節點開始和葉子節點結束。只要是連續的路徑就可以。如輸入 10,9,20,null,null,15,7 109 20 15 7 輸出 42 2.首先將乙個陣列還原成乙個二叉樹。然後根絕二叉樹的根節點返回最大路徑和。cl...

演算法 二叉樹中的最大路徑和

給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3輸出 6 二叉樹相關的題,大部分都可以用遞迴解決。本題中任意乙個節點有兩個相關的值需要關注 一是這個節點作為路徑根節...

二叉樹最大路徑和

每個節點不可以重複經過求,求二叉樹的最大路徑和。二叉樹如圖 本文採用深度優先演算法解題。假設每個節點都有兩個屬性,s stop c continue s屬性為,該節點及其以下節點的不停止走法最大值。c屬性為在還有路可走的情況下的最大值。舉例說明 node4節點,有兩條路可走 路線一和路線二 路線一意...