每日刷題 二叉樹中的最大路徑和

2021-09-27 23:41:33 字數 1101 閱讀 2485

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

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

示例:

例 1:

輸入: [1,2,3]

1

/ \2 3

輸出: 6

例 2:

輸入: [-10,9,20,null,null,15,7]

-10

/ \9 20

/ \

15 7

輸出: 42

第一次讀題時,感覺這道題目甚是唬人。任意結點到任意結點的最大路徑和,一下子讓我聯想到了圖的最短路徑問題,甚至我想先將樹轉化為乙個圖,再用 floyd 演算法求解。

但細細思考,其實並不用這麼麻煩,考慮到樹的結構,它的任意結點到任意結點的路徑最多只有兩種情況:

如上圖,可能有兩種情況:1. 拐個彎的;2. 一條直線下來。

搞清楚這兩種可能的情況,一切就簡單多了。

用遞迴/迭代均可以實現,為了簡單,此處用遞迴。

邊界情況:若結點為空,則返回 0.

遞迴:分別計算左孩子、右孩子中的最大路徑和(從底向上),若左孩子的最大路徑和 + 右孩子的最大路徑和 + 此處結點的權重最大,則對應情況 1 ;否則對應情況 2, 挑選左孩子的最大路徑和、右孩子的最大路徑和中較大的乙個加到此處結點的權重上,此時若更新後的結點權重小於 0,說明這條路沒必要走了,需要將該結點的權重置 0, 繼續向上走。

**:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

intmaxpathsum

(treenode* root)

};

二叉樹最大路徑和 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最大路...