【2804】求二叉树的深度
来源:互联网 发布:c语言温度转换怎么写 编辑:程序博客网 时间:2024/06/06 01:51
求二叉树的深度
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。
输入
输入数据有多组,输入T组数据。每组数据包括两个长度小于<font face="\"Times" new="" roman,="" serif\"="" style="padding: 0px; margin: 0px;">50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。
输出
输出二叉树的深度。
示例输入
2dbgeafcdgebfcalnixulinux
示例输出
43
本题思路:先根据输入的中序遍历和后续遍历创建出先序遍历序列的二叉树,在求出二叉树的深度;
#include <stdio.h>#include <string.h>#include <stdlib.h>struct node{ char data; struct node *left,*right;}*root;char str1[60],str2[60];struct node *creat(int n,char *str1,char *str2)//创立二叉树{ struct node *root; int i; if(n==0) return NULL; root=(struct node *)malloc(sizeof(struct node)); root->data=str2[n-1]; for(i=0;i<n;i++) { if(str1[i]==str2[n-1]) break; } root->left=creat(i,str1,str2); root->right=creat(n-i-1,str1+i+1,str2+i); return root;}int deep(struct node *p)//求二叉树深度的函数{ int l,r; if(!p) return 0; l=deep(p->left); r=deep(p->right); return l>r?l+1:r+1;}int main(){ int n,i,len; struct node *root; while(~scanf("%d",&n)) { for(i=0;i<n;i++) { scanf("%s",str1); scanf("%s",str2); len=strlen(str1); root=creat(len,str1,str2); printf("%d\n",deep(root)); } } return 0;}
0 0
- SDUTOJ 2804求二叉树的深度
- 【2804】求二叉树的深度
- SDUT 2804 求二叉树的深度
- 2804 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- 求二叉树的深度
- iOS8注册推送
- 工厂方法模式--学习笔记
- Java学习笔记之 IO包 字符流
- 1.8 找到只含3,5,7因子的第k大的数
- ext4 Ext.window.MessageBox
- 【2804】求二叉树的深度
- Canvas和Paint的常用方法
- reverse vs converse vs inverse
- 黑马程序员--OC--字符串(一)
- 在Mac下配置Yii2----搭建Yii2框架
- linux yum命令详解
- Android自动测试之monkeyrunner工具
- (十二)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【下】
- 正则中需要转义的特殊字符小结