题目描述 Description
给出一个二叉树,输出它的最大宽度和高度。
输入描述 Input Description
第一行一个整数n。
下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号。如果没有某个儿子为空,则为0。
输出描述 Output Description
输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int max(int a,int b);
int l[20], r[20],depp,d[22];
int qian(int n,int dep)
{
if (dep > depp)
depp = dep;
if (l[n])
qian(l[n],dep+1);
if (r[n])
qian(r[n],dep+1);
d[dep]++;
return 0;
}
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int main()
{
int i;
int n;
cin >> n;
for (i=1;i<=n;i++)
cin>>l[i]>>r[i];
qian(1,1);
int maxx=0;
for (i=1;i<=20;i++)
maxx=max(maxx, d[i]);
cout << maxx << ' ' << depp;
return 0;
}