数据结构实验之求二叉树后序遍历和层次遍历
2016-08-09 15:06
218 查看
数据结构实验之求二叉树后序遍历和层次遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历。
输入
输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列。
输出
每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列
示例输入
2 abdegcf dbgeafc xnliu lnixu
示例输出
dgebfca abcdefg linux xnuli
提示
#include <stdio.h> #include <stdlib.h> #include <string.h> char a[55],b[55]; int i; typedef char element; typedef struct BiTnNode { element data; BiTnNode *rchild,*lchild; } BiTnNode,*BiTree; BiTree CreateTree(int n,char a[],char b[]) { BiTree T; char *p; if(n==0) return NULL; T=new BiTnNode; T->data=a[0]; for(p=b; p!='\0'; p++) if(*p==a[0]) break; int t; t=p-b; T->lchild=CreateTree(t,a+1,b); T->rchild=CreateTree(n-t-1,a+t+1,p+1); return T; } void postTree(BiTree T) { if(!T) return ; postTree(T->lchild); postTree(T->rchild); printf("%c",T->data); } void cengTree(BiTree T) { int out = 0; int in = 0 ; BiTree p[55]; p[in++]=T; while(out<in) { if(p[out]) { printf("%c",p[out]->data); p[in++]=p[out]->lchild; p[in++]=p[out]->rchild; } out++; } } int main() { int n; scanf("%d\n",&n); while(n--) { scanf("%s%s",a,b); int m=strlen(a); BiTree T; T=CreateTree(m,a,b); postTree(T); printf("\n"); cengTree(T); printf("\n"); } return 0; }
相关文章推荐
- 数据结构实验之求二叉树后序遍历和层次遍历
- OJ1796数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- SDUTOJ 2173 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 2137 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历【由前序序列和中序序列求后序序列,二叉树的层次遍历】
- SDUT 2137 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- SDUT 2137 数据结构实验之求二叉树后序遍历和层次遍历
- SDUT-2137数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- SDUT 2137 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历 SDUT