数据结构上机测试4.1:二叉树的遍历与应用1
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
输入
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
第二行输入二叉树的中序遍历序列。
输出
输出该二叉树的后序遍历序列。
示例输入
ABDCEF BDAECF
示例输出
DBEFCA
- #include<stdio.h>
- #include<string.h>
- #include<malloc.h>
- typedef struct tnode
- {
- char data;
- tnode *left, *right;
- }TNODE2;
- TNODE2 *make(char *pstr,char *istr,int n)
- {
- TNODE2 *ptr;
- char *rstr;
- int k;
- if(n<=0) return NULL;
- ptr = (TNODE2*)malloc(sizeof(TNODE2));
- ptr->data = *pstr;
- for(rstr=istr;rstr<istr+n;rstr++)
- if(*rstr == *pstr)
- break;
- k = rstr - istr;
- ptr->left = make(pstr+1,istr,k);
- ptr->right = make(pstr+k+1,istr+k+1,n-k-1);
- return ptr;
- }
- void lastorder(TNODE2 *t)
- {
- if(t == NULL) return ;
- lastorder(t->left);
- lastorder(t->right);
- printf("%c",t->data);
- }
- int main()
- {
- TNODE2 *tree;
- char a[100],b[100];
- scanf("%s",a);
- scanf("%s",b);
- //char *a = "abdegcf";
- //char *b = "dbeacgf";
- int n = strlen(a);
- tree = make(a,b,n);
- lastorder(tree);
- printf("\n");
- return 0;
- }