程序代码:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef struct vode
{
char date;
struct vode *l,*r;
}bitree;
void getpreordertraverse(bitree *root,char pre[],char in[],int ps,int s,int n);
void postordertraverse(bitree *root);
int main()
{
int zong ;
cin>>zong;
while(zong--)
{
char pre[100],in[100];
cin>>pre>>in;
int len=strlen(pre);
bitree *root;
getpreordertraverse(root,pre,in,0,0,len);
postordertraverse(root);
cout<<endl;
}
return 0;
}
void getpreordertraverse(bitree *root,char pre[],char in[],int ps,int s,int n)
{
if(n==0)root=NULL;
else
{
root=(bitree *)malloc(sizeof(bitree));
root->date=pre[ps];
int k;
for(k=s;k<=s+n-1;k++)
if(in[k]==pre[ps])
break;
getpreordertraverse(root->l,pre,in,ps+1,s,k-s);
getpreordertraverse(root->r,pre,in,ps+1+(k-s),k+1,n-(k-s)-1);
}
}
void postordertraverse(bitree *root)
{
if(root)
{
postordertraverse(root->l);
postordertraverse(root->r);
cout<<root->date;
}
}
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef struct vode
{
char date;
struct vode *l,*r;
}bitree;
void getpreordertraverse(bitree *root,char pre[],char in[],int ps,int s,int n);
void postordertraverse(bitree *root);
int main()
{
int zong ;
cin>>zong;
while(zong--)
{
char pre[100],in[100];
cin>>pre>>in;
int len=strlen(pre);
bitree *root;
getpreordertraverse(root,pre,in,0,0,len);
postordertraverse(root);
cout<<endl;
}
return 0;
}
void getpreordertraverse(bitree *root,char pre[],char in[],int ps,int s,int n)
{
if(n==0)root=NULL;
else
{
root=(bitree *)malloc(sizeof(bitree));
root->date=pre[ps];
int k;
for(k=s;k<=s+n-1;k++)
if(in[k]==pre[ps])
break;
getpreordertraverse(root->l,pre,in,ps+1,s,k-s);
getpreordertraverse(root->r,pre,in,ps+1+(k-s),k+1,n-(k-s)-1);
}
}
void postordertraverse(bitree *root)
{
if(root)
{
postordertraverse(root->l);
postordertraverse(root->r);
cout<<root->date;
}
}