输入格式
共n行。
第一行一个整数n,表示有n个结点,编号为1至n,结点1为树根。(1<=n<=50)
第二行至第n行,每行有两个整数x和y,表示在二叉树中x为y的父节点。x第一次出现时y为左孩子
输出格式
输出二叉树的宽度。
#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
int n,i,c,d,Max;
scanf("%d",&n);
int a[n+1]={0},b[n+1]={0}; //a储存结点层数(下标为输入的节点数据),b储存层数结点数(下标表示层数)
a[1]=1;
b[1]=1;
for(i=2;i<=n;i++)
{
scanf("%d %d",&c,&d); //输入节点信息
b[a[c]+1]++; //c的下一层数节点数加一
a[d]=a[c]+1; //数据d的层数等于父节点层数加一
}
Max=1;
for(i=2;i<=n;i++) //寻找哪一层结点数最多,并记录节点数
{
if(b[i]>Max)
Max=i;
}
printf("%d",Max);
return 0;
}