演算法練習 二叉樹中的最大路徑和

2022-05-23 12:24:11 字數 1309 閱讀 8036

每日一笑:

騎電動車去送兒子上學,校門口碰到他班裡乙個女生,小女孩剛從她爸的別克上下來,衝兒子譏笑說「你不是說你爸有個寶馬嗎,原來是這樣的寶馬啊。」我心想這小子牛吹大了,這下糗了吧,兒子卻機智的回答「有寶馬需要開給你看嗎?我又不打算泡你。」

題目:

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

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

示例 1:

輸入: [1,2,3]

1/ \

2   3

輸出: 6

示例 2:

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

-10/ \

9  20

/  \

15   7

輸出: 42

思路:

做這道題首先要明白題目中最大路徑的意思,簡而言之就是以任意節點為起點通過其他節點形成一條路徑,使得該路徑上的節點值之和最大。

例如:以題目中的例項二為例,節點15到20到7為最大的路徑,所以例項二的最大路徑和為42。

我的實現思路是先定義乙個最大值的變數,並賦予其範圍的最小值,然後通過遞迴計算每個節點可以產生的最大值,然後用得出的最大值與最大值的變數進行比較,區最大值。

**實現:

/**樹的類

* definition for a binary tree node.

* public class treenode

* } */

class

solution

//獲取樹最大貢獻值的方法

public

intmaxnumber(treenode tree)

//左右子節點的最大貢獻值

int left =maxnumber(tree.left);

int right =maxnumber(tree.right);

value = tree.val + math.max(left,0) + math.max(right,0);

//對比貢獻值,選擇最大的賦值

max =math.max(max, value);

return tree.val + math.max(math.max(left,0), math.max(right,0));}}

最後附上執行資源使用情況:

二叉樹最大路徑和 python 二叉樹最大路徑和

1.題目描述 輸入乙個二叉樹層次遍歷的結果,輸出這個二叉樹最大路徑和。路徑不一定從根節點開始和葉子節點結束。只要是連續的路徑就可以。如輸入 10,9,20,null,null,15,7 109 20 15 7 輸出 42 2.首先將乙個陣列還原成乙個二叉樹。然後根絕二叉樹的根節點返回最大路徑和。cl...

演算法 二叉樹中的最大路徑和

給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3輸出 6 二叉樹相關的題,大部分都可以用遞迴解決。本題中任意乙個節點有兩個相關的值需要關注 一是這個節點作為路徑根節...

演算法 二叉樹中的最大路徑和

路徑 被定義為一條從樹中任意節點出發,沿父節點 子節點連線,達到任意節點的序列。同乙個節點在一條路徑序列中 至多出現一次 該路徑 至少包含乙個 節點,且不一定經過根節點。路徑和 是路徑中各節點值的總和。給你乙個二叉樹的根節點 root 返回其 最大路徑和 輸入 root 1,2,3 輸出 6 解釋 ...