#include<iostream> #include<string> using namespace std; //例题10.2 二叉树遍历 华中科技大学复试上机题 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; } char c = str1[0]; int pos = str2.find(c); TreeNode* root = new TreeNode(c); root->leftChild = Build(str1.substr(1, pos), str2.substr(0, pos)); root->rightChild = Build(str1.substr(pos + 1), str2.substr(pos + 1)); return root; } void postOrder(TreeNode* root) { if (root == NULL) { return; } postOrder(root->leftChild); postOrder(root->rightChild); cout << root->data; } int main() { string s1, s2; while (getline(cin, s1)) { getline(cin, s2); TreeNode* root = Build(s1, s2); postOrder(root); cout << endl; } return 0; }