#include <iostream>
#include <cstdio>
#include <string>
#define MAX 100
using namespace std;
struct node {
struct node* left;
struct node* right;
int val;
} nodes[MAX];
int loc = 1;
struct node *head = nodes;
struct node * formTree(string pre, string in, struct node *head) {
if (pre.size() == 0 || in.size() == 0) return NULL;
struct node *now = &nodes[loc++];
now->left = now->right = NULL;
now->val = pre[0] - '0';
int pos = in.find(pre[0], 0);
int leftLen = pos;
int rightLen = in.size() - 1 - pos;
now->left = formTree(pre.substr(1, leftLen), in.substr(0, leftLen), now->left);
now->right = formTree(pre.substr(leftLen + 1, rightLen), in.substr(pos + 1, rightLen), now->right);
return now;
}
void printPostTree(struct node *head) {
if (!head) return;
printPostTree(head->left);
printPostTree(head->right);
printf("%d", head->val);
}
int main(int argc, char** argv) {
string preStr, inStr;
getline(cin, preStr);
getline(cin, inStr);
head = formTree(preStr, inStr, head);
printPostTree(head);
return 0;
}
//426315
//623415
//632514
2017计算机院C
最新推荐文章于 2021-07-21 21:14:00 发布