Sample Output
dgebfca abcdefg linux xnuli
#include <iostream>
#include"cstdio"
#include"cstring"
#include"cstdlib"
using namespace std;
char pre[1050],ins[1050],ans[1050];
struct node
{
int data;
node *lch,*rch;
};
node *buildtree(char*pre,char*ins,int n)
{
int k=0;
node *p;
char *q;
if(n<=0)return NULL;
p=(node *)malloc(sizeof(node));
p->data=*pre;
for(q=&ins[0];q<ins+n;q++)
if(*q==*pre)break;
k=q-ins;
p->lch=buildtree(pre+1,ins,k);
p->rch=buildtree(pre+1+k,q+1,n-k-1);
return p;
}
void houxu(node*p)
{
if(p!=NULL)
{
houxu(p->lch);
houxu(p->rch);
printf("%c",p->data);
}
}
void cengci(node *p)
{
int jin=0,chu=0;
node *q[1050];
q[jin++]=p;
while(jin>chu)
{
if(q[chu]!=NULL)
{
printf("%c",q[chu]->data);
q[jin++]=q[chu]->lch;
q[jin++]=q[chu++]->rch;
}
else chu++;
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s%*c%s",pre,ins);
int n=strlen(pre);
node *tree;
tree=(node *)malloc(sizeof(node));
tree=buildtree(pre,ins,n);
houxu(tree);
putchar('\n');
cengci(tree);
putchar('\n');
}
return 0;
}