#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Tnode
{
struct Tnode *lchild,*rchild;
char e;
}Tnode;
Tnode Tree[50];
int loc;
char str1[30],str2[30];
Tnode *Create()
{
Tree[loc].lchild=Tree[loc].rchild=NULL;
return &Tree[loc++];
}
Tnode *Build(int low1,int high1,int low2,int high2)
{
int i=low2;
Tnode *ret=Create();
ret->e=str1[low1];
while(str1[low1]!=str2[i])
i++;
if(i!=low2)
ret->lchild=Build(low1+1,low1+i-low2,low2,i-1);
if(i!=high2)
ret->rchild=Build(low1+i-low2+1,high1,i+1,high2);
return ret;
}
void PostOrder(Tnode *t)
{
if(t)
{
PostOrder(t->lchild);
PostOrder(t->rchild);
printf("%c",t->e);
}
}
int main()
{
int len1,len2;
Tnode *Tr;
while((gets(str1)!=NULL)&&(gets(str2)!=NULL))
{
loc=0;
len1=strlen(str1);
len2=strlen(str2);
Tr=Build(0,len1-1,0,len2-1);
PostOrder(Tr);
printf("\n");
}
return 1;
}
这道题目并不是我自己单独完成。参考王道机试指南浙大满分帝所写的代码。
自己还是对树和图的相关操作不熟悉!