#include <iostream> #include <string> using namespace std; struct TreeNode { char data; TreeNode* leftChild; TreeNode* rightChild; TreeNode (char c) : data(c), leftChild(NULL), rightChild(NULL) {} }; TreeNode* Build (string str1, string str2) { if (str1.size() == 0) { // 返回空树 return NULL; } charstr1 = C [ 0 ]; // current character the TreeNode * = the root new new the TreeNode (C); // create a new node int position = str2.find (C); // Find the cut points root-> leftChild = Build (str1 .substr ( . 1 , position), str2.substr ( 0 , position)); the root -> = rightChild the Build (str1.substr (position + . 1 ), str2.substr (position + . 1 )); return the root; } void postorder (the TreeNode * the root) // postorder traversal { IF (root == NULL) { return; } PostOrder(root->leftChild); PostOrder(root->rightChild); cout << root->data; return; } int main () { string str1, str2; while (cin >> str1 >> str2) { TreeNode* root = Build(str1, str2); PostOrder(root); cout << endl; } return 0; }