給定乙個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,到達加粗樣式的序列。該路徑至少包含乙個節點,且不一定經過根節點。
示例:
例 1:第一次讀題時,感覺這道題目甚是唬人。任意結點到任意結點的最大路徑和,一下子讓我聯想到了圖的最短路徑問題,甚至我想先將樹轉化為乙個圖,再用 floyd 演算法求解。輸入: [1,2,3]
輸出: 61
/ \2 3
例 2:
輸入: [-10,9,20,null,null,15,7]
輸出: 42-10
/ \9 20
/ \
15 7
但細細思考,其實並不用這麼麻煩,考慮到樹的結構,它的任意結點到任意結點的路徑最多只有兩種情況:
如上圖,可能有兩種情況: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最大路...