先声明,我还在学习中,这个题大部分代码借鉴的大佬的,其实这算是比较经典二叉树题了,关键在于递归建树。
代码附上:
1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 char TF[27]; 7 char TM[27]; 8 9 void TL( int p1, int p2, int q1, int q2, int root ) 10 { 11 if ( p1 > p2 ) return; 12 for ( root = q1 ; TM[root] != TF[p1] ; ++ root ); 13 TL( p1+1, p1+root-q1, q1, root-1, 0 ); 14 TL( p1+root-q1+1, p2, root+1, q2, 0 ); 15 cout << TM[root]; 16 } 17 18 int main() 19 { 20 while ( cin >> TF >> TM ) { 21 int L = strlen(TF)-1; 22 TL( 0, L, 0, L, 0 ); 23 cout << endl; 24 } 25 return 0; 26 }