1501 二叉树最大宽度和高度

来源:互联网 发布:程序员面试简历模板 编辑:程序博客网 时间:2024/06/06 04:56
题目描述 Description

    给出一个二叉树,输出它的最大宽度和高度。

输入描述 Input Description

第一行一个整数n。

下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号。如果没有某个儿子为空,则为0。

输出描述 Output Description

输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开。

样例输入 Sample Input

5

2 3

4 5

0 0

0 0

0 0

样例输出 Sample Output

2 3

#include<iostream>    using namespace std;int h=0;int w=1;int num[25]={0};int a[25][2];void dfs(int x,int depth){    if(depth>h)        h=depth;    num[depth]++;    if(a[x][0]) dfs(a[x][0],depth+1);    if(a[x][1]) dfs(a[x][1],depth+1);}int main(){    int n;    cin>>n;    for(int i=1;i<=n;i++)        for(int j=0;j<2;j++)            cin>>a[i][j];    int max=0;    dfs(1,1);    for(int i=1;i<=n;i++)        if(max<num[i])            max=num[i];    cout<<max<<" "<<h;    return 0;}