#include <stdio.h>
#include <string.h>
int k;
void build(int n,char *s1,char *s2,char *s);
int main()
{
char s1[100],s2[100],s[100];
while(scanf("%s%s",s1,s2)==2)
{
k=0;
int n=strlen(s1);
build(n,s1,s2,s);
s[n]='\0';
printf("%s\n",s);
}
return 0;
}
//void build(int n,char *s1,char *s2,char *s)
//{
// if(n<=0)
// return ;
// s[k++]=s1[n-1];
// int p=strchr(s2,s1[n-1])-s2; //找到根节点在中序遍历的位置
// //strchr函数原型:extern char *strchr(const char *s,char c);查找字符串s中首次出现字符c的位置。
// build(p,s1,s2,s); //递归构造左子树的先序遍历
// build(n-p-1,s1+p,s2+p+1,s); //递归构造右子树的先序遍历
//}
//若给出先序遍历和中序遍历,求后序遍历,那么程序改为
//void build(int n,char *s1,char *s2,char *s)
//{
// if(n<=0) return;
// int p=strchr(s2,s1[0])-s2;
// build(p,s1+1,s2,s);
// build(n-p-1,s1+p+1,s2+p+1,s+p);
// s[n-1]=s1[0];
//}
//已知先序遍历和后序遍历,无法唯一确定出二叉树。
已知两种二叉树的遍历,求第三种
最新推荐文章于 2022-03-06 16:32:33 发布