您的位置:首页 > 其它

codevs 1501二叉树最大宽度和高度

2016-07-30 20:12 225 查看
地址:http://codevs.cn/problem/1501/

第一次接触树。

幸好这题的节点都是一定的,不是随便定下来的。(其实上网查了题解才知道理解错题意了。。)

所以用深搜来做不用想这么多。

不然我暂时也做不了。

#include <iostream>

using namespace std;

int width[10], tree[20][2];
int layernum, widthnum;

void dfs(int i, int layer) {//i是节点的编号
width[layer]++;//每多一个节点,对应层数的宽度加1
if(layer > layernum) layernum = layer;//判断层数的最大值
if(tree[i][0] != 0) dfs(tree[i][0], layer + 1);
if(tree[i][1] != 0) dfs(tree[i][1], layer + 1);
}

int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> tree[i][0] >> tree[i][1];
}
layernum = 0;
dfs(1, 1);
for(int i = 1; i <= n; i++) {
if(width[i] > widthnum) widthnum = width[i];
}
cout << widthnum << " " << layernum;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: