二叉树的最大宽度和高度
2017-02-15 13:15
281 查看
题目描述 Description 给出一个二叉树,输出它的最大宽度和高度。输入描述 Input Description 第一行一个整数n。 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号。如果没有某个儿子为空,则为0。输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开。样例输入 Sample Input52 34 50 00 00 0样例输出 Sample Output2 3数据范围及提示 Data Size & Hintn<16默认第一个是根节点以输入的次序为编号2-N+1行指的是这个节点的左孩子和右孩子注意:第二题有极端数据! 1 0 0//树的DFS
#include<iostream> using namespace std; int ch[17][2]; int width[1000];//用来记录每一层的宽度 int x=0,deep=0,height=0;//deep用来记录当前高度,height用来记录最大高度 void dfs(int i,int deep) //i为当前节点编号,deep为当前节点深度 { if(deep>height) height=deep; width[deep]++; if(ch[i][0]) //ch[i][0]为当前节点左子树 i dfs(ch[i][0],deep+1); // / \ if(ch[i][1]) //ch[i][1]为当前节点右子树 ch[i][0] ch[i][1] dfs(ch[i][1],deep+1); } int main() { int n; cin>>n; for(int i=1;i<=n;i++) cin>>ch[i][0]>>ch[i][1]; dfs(1,1); for(int i=1;i<=1000;i++) //找出最大宽度 { if(width[i]>x) x=width[i]; } cout<<x<<" "<<height; }
相关文章推荐
- [wikioi]二叉树最大宽度和高度
- CODE[VS]_1501 二叉树的最大宽度和高度
- 二叉树最大宽度和高度(codevs1501)
- 1501 二叉树最大宽度和高度
- CODE[VS] NO.1501 二叉树最大宽度和高度
- p1501 二叉树最大宽度和高度
- Codevs 1501 二叉树最大宽度和高度 dfs
- codevs 1501 二叉树最大宽度和高度x
- codevs1501 二叉树最大宽度和高度
- 二叉树 Java 实现 前序遍历 中序遍历 后序遍历 层级遍历 获取叶节点 宽度 ,高度,队列实现二叉树遍历 求二叉树的最大距离
- Codevs 1501 二叉树的最大宽度和高度
- Codevs 1501 二叉树最大宽度和高度(笔记)
- CODE[VS]1501 二叉树最大宽度和高度
- wikioi1501 二叉树最大宽度和高度
- code[vs] 1501 二叉树最大宽度和高度
- 二叉树最大宽度和高度(java)
- codevs 1501 二叉树最大宽度和高度
- 二叉树最大宽度和高度
- codeVS 1501 二叉树的最大宽度和高度
- 树 二叉树最大宽度和高度