leetcode 124 二叉樹中的最大路徑和

2021-09-29 03:29:37 字數 1067 閱讀 8534

題目描述:

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

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

示例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.該節點 左子樹路徑 ...