F.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef struct BTree{
  4. char s;
  5. struct BTree *left;
  6. struct BTree *right;
  7. }BTree,*BNode;
  8. inline void creat(BNode &T,string s1,string s2)
  9. {
  10. if(s1.length()==0)
  11. {
  12. T=NULL;
  13. return;
  14. }
  15. int index = s2.find(s1[0]);
  16. string ls1 = s1.substr(1,index);
  17. string rs1 = s1.substr(index+1,s1.length());
  18. string ls2 = s2.substr(0,index);
  19. string rs2 = s2.substr(index+1,s2.length()) ;
  20. T=(BNode)malloc(sizeof(BTree));
  21. if(T!=NULL)
  22. {
  23. T->s = s1[0];
  24. creat(T->left,ls1,ls2);
  25. creat(T->right,rs1,rs2);
  26. }
  27. }
  28. void postorderTraversal(BNode &t)
  29. {
  30. if(t!=NULL)
  31. {
  32. if(t->left!=NULL)
  33. {
  34. cout<<"(";
  35. postorderTraversal(t->left);
  36. cout<<")";
  37. }
  38. cout<<t->s;if(t->right!=NULL)
  39. {
  40. cout<<"(";
  41. postorderTraversal(t->right);
  42. cout<<")";
  43. }
  44. }
  45. }
  46. int main()
  47. {
  48. string s1,s2;
  49. int n;
  50. cin>>n;
  51. while(n--)
  52. {
  53. cin>>s1>>s2;
  54. BNode t;
  55. creat(t,s1,s2);
  56. postorderTraversal(t);
  57. cout<<endl;
  58. }
  59. return 0;
  60. }