題目描述:
給定乙個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。
示例1:
示例2:
輸出:48
解題思路:
在示例1中,我們感覺好像就是求子樹的最大值,但從示例2中我們可以看出,當左右子樹和都大於0的時候,我們只能選擇左右子樹中和最大的子樹去組成更大的子樹,於是我們形成以下思路:
以後序遍歷整棵樹
對於空節點,我們返回int_min值
對於非空節點。如果其左右子樹的結果都大於0,我們先要判斷 左子樹結果+右子樹結果+root 是否為最大值,但我們只能返回選擇其中一顆子樹的結果(如示例2中的11只能返回7+11);如果左右子樹只有乙個結果大於0,我們返回 root+大於0 子樹結果(都小於0則返回root),在返回前需要判斷當前返回值是否為最大值
說明:以上返回值即為當前子樹中包含根節點的最大路徑和(因為要與其他節點連通,所以必須包含根節點),而當前子樹的最大路徑和(不一定包含根節點)儲存在全域性變數res中
**實現:
class
solution
//它返回在當前子樹中包含root節點的情況下的最大路徑和
intmaxpathsumcore
(treenode* root)
else
if(right >0)
if(ret > res)
//判斷當前子樹中是否構成最大路徑和
res = ret;
}return ret;}}
;
LeetCode 124 二叉樹中的最大路徑和
給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3 輸出 6示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42本題與 ...
Leetcode 124 二叉樹中的最大路徑和
題目 給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3輸出 6 示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42 ...
leetcode124 二叉樹中的最大路徑和
參考 思路參考 參考 class solution return the max value ended at root node inthelp treenode root 分析1給定乙個非空節點,最終路徑經過這個節點有4種情況 1.只有該節點本身 左右子樹的路徑都是負數 2.該節點 左子樹路徑 ...