http://www.geeksforgeeks.org/diameter-of-a-binary-tree/
1
#include <iostream>
2
#include <vector>
3
#include <algorithm>
4
#include <queue>
5
#include <stack>
6
using
namespace
std;
7
8
struct
node {
9
int
data;
10
struct
node *left, *
right;
11
node() : data(
0
), left(NULL), right(NULL) { }
12
node(
int
d) : data(d), left(NULL), right(NULL) { }
13
};
14
15
void
print(node *
node) {
16
if
(!node)
return
;
17
print(node->
left);
18
cout << node->data <<
"
"
;
19
print(node->
right);
20
}
21
22
int
diameter(node *root,
int
&
ans) {
23
if
(!root)
return
0
;
24
int
l = diameter(root->
left, ans);
25
int
r = diameter(root->
right, ans);
26
ans = max(ans, l+r+
1
);
27
return
max(l, r) +
1
;
28
}
29
30
31
int
main() {
32
struct
node* root =
new
node(
1
);
33
root->left =
new
node(
2
);
34
root->right =
new
node(
3
);
35
root->left->left =
new
node(
4
);
36
root->left->right =
new
node(
5
);
37
int
ans =
0
;
38
diameter(root, ans);
39
cout << ans <<
endl;
40
return
0
;
41
}
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

