124 二叉樹中的最大路徑和

2021-10-19 15:39:15 字數 1373 閱讀 8254

題目描述

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

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

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

示例 1:

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

輸出:6

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

示例 2:

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

輸出:42

解釋:最優路徑是 15 -> 20 -> 7 ,路徑和為 15 + 20 + 7 = 42

題解:

定義單邊路徑:表示以根節點為起點,節點值之和最大的路徑。

遞迴遍歷每個節點,顯然每個節點都有一條最大路徑:即以該節點為中間節點,將左子樹的單邊路徑和 右子樹的單邊路徑拼接起來。對於每個節點對應的最大路徑,保留它們中的最大值。

時間複雜度:o(n

)o(n)

o(n)

額外空間複雜度:o(n

)o(n)

o(n)

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

intmaxpathsum

(treenode* root)};

/*記憶體:26.9mb,擊敗:89.67%

*/

124 二叉樹中的最大路徑和

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

124 二叉樹中的最大路徑和

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

124 二叉樹中的最大路徑和

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