387,二叉樹中的最大路徑和

2022-09-18 09:45:14 字數 1678 閱讀 6559

給定乙個非空二叉樹,返回其最大路徑和。

路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。

示例 1:

示例 2:

問題分析

這道題要求的最大路徑和如果是從根節點開始到葉子節點就好辦了,我們可以通過遞迴的方式,從下往上,捨去比較小的路徑節點,保留比較大的節點。

但這道題要求的最大路徑和並不一定經過根節點,如果再使用上面的方式就行不通了,對於這道題我們可以分為4種情況來討論

1,只要當前節點,捨棄子節點。比如下面結點2的左右子節點都是負數,如果是負數我們還不如不要,所以直接捨棄子節點。

2,保留當前節點和左子節點。比如下面結點2的右子節點是負數,我們直接捨棄右子節點,但左子節點不是負數,我們可以保留左子節點。

3,保留當前節點和右子節點。比如下面結點2的左子節點是負數,我們直接捨棄左子節點,但右子節點不是負數,我們可以保留右子節點。

4,保留當前節點和兩個子節點。比如下面結點2的左右子節點都不是負數,我們都可以留下。

上面的1,2,3都可以作為子樹的一部分再繼續計算,我們可以使用同乙個公式,取左右子節點最大的那個即可,如果都小於0我們不要了,下面公式中left是左子樹的值,right是右子樹的值

而4是不能在作為子樹的一部分參與計算的,因為已經分叉了,比如下面的3→2→4是不能再和結點1進行組合的。第4種情況如果左右子樹有乙個是小於0的我們還不如不選,如果都大於0我們都要選的。

搞懂了上面的分析過程,**就很容易寫出來了,我們最後來看下**

**部分

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

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

二叉樹最大路徑和

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

二叉樹中的最大路徑和

給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3 輸出 6 示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42最大路...