124 二叉樹中的最大路徑和

2021-10-07 09:38:30 字數 1181 閱讀 6265

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

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

示例 1:

輸入: [1,2,3]

1/ \

2 3

輸出: 6

示例 2:

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

-10/ \

9 20

/ \

15 7

輸出: 42

思路:分治+遞迴

二叉樹的最大值等於其所有子樹的最大值中的最大值,對於葉子節點其最大值等於他本身;

package leetcode;

/** * @classname q124

* @description

* * @author m

* @version 1.0

*/public

class

q124

/** * 通過遞迴查詢當前節點往下走能獲得的最大值,

* 過程中不斷更新最大值

* @param root

* @return

*/public

intdfs

(treenode root)

//分別計算左右節點的最大值,如果小於0按0算,即不繼續往下走

int leftgain = math.

max(

dfs(root.left),0

);int rightgain = math.

max(

dfs(root.right),0

);//更新最大值,這裡是找當前子樹所能獲得的最大結果,是區域性最大值,

// 通過不斷比較區域性最大值獲得全域性最大值,即分治的思想

max = math.

max(max, root.val+leftgain+rightgain)

;//返回當前結點的最大值

return root.val + math.

max(leftgain,rightgain);}

}

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 沒看題解獨自...