1501 二叉树最大宽度和高度

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
题目描述 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

数据范围及提示 Data Size & Hint

n<16

默认第一个是根节点

以输入的次序为编号

2-N+1行指的是这个节点的左孩子和右孩子

注意:第二题有极端数据!

          1

          0 0

这题你们别想投机取巧了,给我老老实实搜索!

 

思路:

  水到不能再水的搜索;

来,上代码:

#include<cstdio>
#include<iostream> using namespace std; struct node {
int from,to,next;
};
struct node edge[]; int n,num,head[],ans_h,w[],ans_w; inline void edge_add(int from,int to)
{
num++;
edge[num].to=to;
edge[num].from=from;
edge[num].next=head[from];
head[from]=num;
} void search(int now,int now_)
{
ans_h=max(now_,ans_h),w[now_]++;
for(int i=head[now];i!=;i=edge[i].next) search(edge[i].to,now_+);
} int main()
{
scanf("%d",&n);
int ch_l,ch_r;
for(int i=;i<=n;i++)
{
scanf("%d%d",&ch_l,&ch_r);
if(ch_l) edge_add(i,ch_l);
if(ch_r) edge_add(i,ch_r);
}
search(,);
for(int i=;i<=ans_h;i++) ans_w=max(ans_w,w[i]);
printf("%d %d\n",ans_w,ans_h);
return ;
}

最新文章

  1. C#遍历集合与移除元素的方法
  2. activity管理
  3. get_free_page
  4. Android 常用的adb命令
  5. ffmpeg-20160522-git-bin
  6. [EventBus源码解析] EventBus.register 方法详述
  7. Java Hour 17 来个CURD吧(二)
  8. IE和主流浏览器
  9. 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程
  10. ubuntu的vi
  11. leetcode@ [126] Word Ladder II (BFS + 层次遍历 + DFS)
  12. 【MINA】序列化和反序列化我们要考虑的问题
  13. 解决maven仓库有jar包但是maven程序无法下载仓库jar包
  14. 移动端touch实现下拉刷新
  15. SpringCloud 教程
  16. Python——PyQt GUI编程(python programming)
  17. Python-eval()函数
  18. FTP:500 OOPS: failed to open vsftpd log file:/var/log/vsftpd.log
  19. Test Scenarios for Excel Export functionality
  20. [dpdk][kernel][driver] 如何让DPDK的UIO开机自动加载到正确的网卡上

热门文章

  1. 数据持久化之NSKeyedArchiver
  2. Ubuntu Server 14.04升级Ubuntu Server 16.04
  3. 让结构体类型frame的某个属性可以直接修改
  4. JAVA下实现二叉树的先序、中序、后序、层序遍历(递归和循环)
  5. Android 数据库的事务
  6. android 界面设计基本知识
  7. Hibernate连接mysql数据库并自动创建表
  8. vi, vim 基本使用(2)
  9. C# 表复制和数据行的复制说明(Clone、ImportRow 、Copy )
  10. mysql Lock wait timeout exceeded; try restarting transaction