二叉樹兩個節點的最大路徑

2022-08-10 19:27:14 字數 1861 閱讀 1888

參考部落格:傳送門

問題:如何求二叉樹兩個節點的最大路徑

思路:分為兩種情況

1)路徑經過根節點

2)路徑不經過根節點,是其左右子樹的最大路徑

比較這兩種情況,去較大的即為最後結果

1 #include 2

3using

namespace

std;45

struct

node;

9struct

result;

13 result getmaxdistance(node *root);

16return

ans;17}

18 result lans = getmaxdistance(root->left);

19 result rans = getmaxdistance(root->right);

20result result;

21 result.maxdepth = max(lans.maxdepth,rans.maxdepth)+1

;22 result.maxdistance = max(max(lans.maxdistance,rans.maxdistance),lans.maxdepth+rans.maxdepth);

23return

result;24}

25void link(node *nodes,int p,int l,int

r)29

if(r!=-1)32

}33intmain()34;

36 link(test1, 0, 1, 2

);37 link(test1, 1, 3, 4

);38 link(test1, 2, 5, 6

);39 link(test1, 3, 7, -1

);40 link(test1, 5, -1, 8

);41 cout<

test1:

"<0]).maxdistance<

4243 node test2[4] = ;

44 link(test2, 0, 1, 2

);45 link(test2, 1, 3, -1

);46 cout<

test2:

"<0]).maxdistance<

4748 node test3[9] = ;

49 link(test3, 0, -1, 1

);50 link(test3, 1, 2, 3

);51 link(test3, 2, 4, -1

);52 link(test3, 3, 5, 6

);53 link(test3, 4, 7, -1

);54 link(test3, 5, -1, 8

);55 cout<

test3:

"<0]).maxdistance<

5657 node test4[9] = ;

58 link(test4, 0, 1, 2

);59 link(test4, 1, 3, 4

);60 link(test4, 3, 5, 6

);61 link(test4, 5, 7, -1

);62 link(test4, 6, -1, 8

);63 cout<

test4:

"<0]).maxdistance<

64return0;

65 }

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

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

二叉樹最大路徑之和

binary tree maximum path sum 解題思路 這道題是求樹的路徑和的題目,不過和平常不同的是這裡的路徑不僅可以從根到某乙個結點,而且路徑可以從左子樹某乙個結點,然後到達右子樹的結點,就像題目中所說的可以起始和終結於任何結點。在這裡樹沒有被看成有向圖,而是被當成無向圖來尋找路徑。...

二叉樹最大路徑和

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