聲明:這篇文章是學習了網友Cathy11的博客之後才寫的,向Cathy11表示感謝!
今天做了POJ2255,感覺有點難,因爲要用到結構體和二叉樹等知識,開始糊弄了很久,沒有思路,後來看了網友的報告,一下豁然開朗,感覺自己收穫挺大的,發文記念。
網友原文是用C++寫的,鄙人不才,對C++用得不熟,於是改用C寫,感覺用C還是沒有C++方便,因爲C++的STL有一些很方便的函數可以直接調用。
程序如下:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct NODE
{
char t;
struct NODE *lch,*rch;
}Node;
int find(char *str,char ch,int len)
{
int i;
for(i=0;i<len;i++)
{
if(str[i]==ch)
return i;
}
}
Node *create(char *str1,char *str2,int len1,int len2)
{
Node *root;
if(len1>0)
{
root=(Node*)malloc(sizeof(Node));
root->t=str1[0];
int index=find(str2,root->t,len2);
root->lch=create(str1+1,str2,index,index);
root->rch=create(str1+index+1,str2+index+1,len1-index-1,len2-index-1);
}
else
{
root=NULL;
}
return root;
}
int output(Node *root)
{
if (root!=NULL)
{
output(root->lch);
output(root->rch);
printf("%c",root->t);
}
return 0;
}
int main()
{
char str1[50]="";
char str2[50]="";
while(scanf("%s%s",str1,str2)!=EOF)
{
Node *root=create(str1,str2,strlen(str1),strlen(str2));
output(root);
printf("/n");
}
return 0;
}