二叉樹中的最大路徑和

2021-10-08 16:14:01 字數 1861 閱讀 8901

問題描述 :

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

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

示例 1:

輸入: [1,2,3]

1

/ \2 3

輸出: 6

示例 2:

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

-109 20

/ \15 7

輸出: 42

可使用以下main函式:

#include

#include

#include

#include

#include

using

namespace std;

struct treenode

treenode

(int x)

:val

(x),

left

(null),

right

(null

)treenode

(int x, treenode *left, treenode *right)

:val

(x),

left

(left)

,right

(right)};

treenode*

inputtree()

if(count==n)

break

; cin>>item;

count++;if

(strcmp

(item,

"null")!=

0)}return root;

}int

main()

輸入說明 :

首先輸入結點的數目n(注意,這裡的結點包括題中的null空結點)

然後輸入n個結點的資料,需要填充為空的結點,輸入null。

輸出說明 :

輸出乙個整數,表示結果。

輸入範例 :

7-10 9 20 null null 15 7

輸出範例 :

42

int

dfs(treenode* node,

int&val)

int leftmax=

max(0,

dfs(node-

>left,val));

//左子樹中的最大值 如果為負數 直接捨棄

int rightmax=

max(0,

dfs(node-

>right,val));

int lmr=node-

>val+leftmax+rightmax;

//left->root->right路徑

int ret=node-

>val+

max(leftmax,rightmax)

;//經過root的最大單邊和

val=

max(val,

max(lmr,ret));

//取上述二者最大值

return ret;

//返回給上層路徑的最大單邊和

}int

maxpathsum

(treenode* node)

int val=int_min;

dfs(node,val)

;return val;

}

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

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

二叉樹最大路徑和

每個節點不可以重複經過求,求二叉樹的最大路徑和。二叉樹如圖 本文採用深度優先演算法解題。假設每個節點都有兩個屬性,s stop c continue s屬性為,該節點及其以下節點的不停止走法最大值。c屬性為在還有路可走的情況下的最大值。舉例說明 node4節點,有兩條路可走 路線一和路線二 路線一意...

二叉樹中的最大路徑和

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