#include <bits/stdc++.h>
using namespace std;
struct node
{
char num;
struct node *l,*r;
};
struct node *jianshu(int len,char zst[],char hst[])
{
if(len<=0) return NULL;
struct node *root;
root=(struct node *)malloc(sizeof(struct node));
root->num=hst[len-1];
int i;
for(i=0;i<len;i++)
{
if(zst[i]==hst[len-1])
break;
}
root->l=jianshu(i,zst,hst);
root->r=jianshu(len-i-1,zst+i+1,hst+i);
return root;
};
void shuchu(struct node *head)
{
if(head==NULL)
return;
printf("%c",head->num);
shuchu(head->l);
shuchu(head->r);
}
int main()
{
int len,t;
char zst[1010],hst[1010];
struct node *head;
scanf("%d",&t);
while(t--)
{
scanf("%s %s",zst,hst);
len=strlen(hst);
head=jianshu(len,zst,hst);
shuchu(head);
printf("\n");
}
return 0;
}
这是求二叉树先序遍历的代码, 我对于建树的过程还是不太明白。。。。