1 /* 2 DEABFCHG 3 DEAFHGCB 4 */ 5 #include<stdio.h> 6 #include<string.h> 7 #include<stdlib.h> 8 char pre[10],in[10],last[10];//數組規模比預算稍微設置大一點 9 void dfs(int instart,int inend,int lastroot,int preindex){ 10 if(instart>inend) return;//出口 11 for(int i=instart;i<=inend;i++){ 12 if(in[i] == last[lastroot]){ 13 pre[preindex] = in[i]; 14 dfs(instart,i-1,lastroot-(inend-i)-1,preindex+1);//左子樹 15 dfs(i+1,inend,lastroot-1,preindex+(i-instart)+1);//右子樹 16 return; 17 } 18 } 19 } 20 int main(){ 21 scanf("%s",&in);//錄入中序,後序 22 getchar();//處理回車 23 scanf("%s",&last); 24 int leni = strlen(in); 25 int lenl = strlen(last); 26 dfs(0,leni-1,lenl-1,0); 27 printf("%s",pre); 28 return 0; 29 }