1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include <bits/stdc++.h>
- using namespace std;
- typedef struct BTree{
- char s;
- struct BTree *left;
- struct BTree *right;
- }BTree,*BNode;
- inline void creat(BNode &T,string s1,string s2)
- {
- if(s1.length()==0)
- {
- T=NULL;
- return;
- }
-
- int index = s2.find(s1[0]);
- string ls1 = s1.substr(1,index);
- string rs1 = s1.substr(index+1,s1.length());
- string ls2 = s2.substr(0,index);
- string rs2 = s2.substr(index+1,s2.length()) ;
- T=(BNode)malloc(sizeof(BTree));
- if(T!=NULL)
- {
- T->s = s1[0];
- creat(T->left,ls1,ls2);
- creat(T->right,rs1,rs2);
- }
- }
- void postorderTraversal(BNode &t)
- {
- if(t!=NULL)
- {
- if(t->left!=NULL)
- {
- cout<<"(";
- postorderTraversal(t->left);
- cout<<")";
- }
- cout<<t->s;if(t->right!=NULL)
- {
- cout<<"(";
- postorderTraversal(t->right);
- cout<<")";
- }
-
- }
- }
- int main()
- {
- string s1,s2;
- int n;
- cin>>n;
- while(n--)
- {
- cin>>s1>>s2;
- BNode t;
- creat(t,s1,s2);
- postorderTraversal(t);
- cout<<endl;
- }
- return 0;
- }
|