參考部落格:傳送門
問題:如何求二叉樹兩個節點的最大路徑
思路:分為兩種情況1)路徑經過根節點
2)路徑不經過根節點,是其左右子樹的最大路徑
比較這兩種情況,去較大的即為最後結果
1 #include 23using
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節點,有兩條路可走 路線一和路線二 路線一意...