2137 数据结构实验之求二叉树后序遍历和层次遍历
来源:互联网 发布:淘宝店铺有几种 编辑:程序博客网 时间:2024/06/03 05:07
数据结构实验之求二叉树后序遍历和层次遍历
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。
输入
输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列。
输出
每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列
示例输入
2abdegcfdbgeafcxnliulnixu
示例输出
dgebfcaabcdefglinuxxnuli
#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ char data ; struct node *l,*r;};struct node *build (char *a,char *b,int n){ int k=0; struct node *p; char *new; if (n<=0) return NULL; p=(struct node *)malloc(sizeof (struct node )); p->data=*a; for (new=&b[0];new <b+n;new++) { if (*new==*a) break; } k=new-b; p->l=build (a+1,b,k); p->r=build (a+1+k,new+1,n-1-k); return p;}void last (struct node *p){ if (p!=NULL) { last (p->l); last (p->r); printf ("%c",p->data); }}void cengci (struct node *t)//层次遍历,利用队列的思想{ int a=0,s=1;//a表示当前层,s表示下一层 struct node *p[10000]; p[0]=t; while (a<s) { if (p[a]) { printf("%c",p[a]->data); p[s]=p[a]->l;//先左后右,个数+1;层不变 s++; p[s]=p[a]->r; a++;s++;//个数层数都加1 } else { a++; } }}int main (){ int t,n; char a[100],b[100]; while (~scanf ("%d",&t)) { while (t--) { struct node *tree; scanf ("%s%s",a,b); n=strlen (a); tree=build (a,b,n); last (tree); printf ("\n"); cengci (tree); printf ("\n"); } } return 0;}
0 0
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 记录我的求职经历
- Http状态的传递和保存 之 Application
- Derby数据库之--安装
- JNDI接触
- 2137 数据结构实验之求二叉树后序遍历和层次遍历
- SRM 609 D2L3: VocaloidsAndSongs,dp
- zoj 3726
- Sharepoint 2010 Event 部署注意事项
- Http状态的传递和保存 之 几种数据传递的区别和不同用途
- 手动删除ppa
- 分析两种实现SSL会话劫持的典型技术
- 应届毕业生跪求就业指导
- C++中的new delete