今天只水了一道二叉树重建,本来白书上是有代码的,可惜我的白书锁教室了,只好自己想了一下,还算可以。

 1 #include <stdio.h>
 2 #include <string.h>
 3 int cnt;
 4 char c[30];
 5 void build(char * s,char * t,int l)
 6 {
 7     if(l == 1)
 8     {c[cnt++] = *s; return ;}
 9     int n = strchr(t,s[0]) - t;
10     if(n) build(s+1,t,n);
11     if(l-n-1)
12         build(s+n+1,t+n+1,l-n-1);
13     c[cnt++] = *s;
14 }
15 int main()
16 {
17     char a[30],b[30];
18     int l,i;
19     while(~scanf("%s%s",a,b))
20     {
21         cnt = 0;
22         l = strlen(a);
23         build(a,b,l);
24         for(i = 0; i < l; i++)
25             printf("%c",c[i]);
26         printf("\n");
27     }
28     return 0;
29 }