題目描述
輸入格式
第一行: 樹的中序遍歷
第二行: 同樣的樹的前序遍歷
輸出格式
單獨的一行表示該樹的後序遍歷。
輸入輸出樣例
輸入 #1複製
ABEDFCHG CBADEFGH
輸出 #1複製
AEFDBHGC
模板如下:重在partition的過程,參數極容易出錯
#include <bits/stdc++.h>
using namespace std;
const int MAX = 1000005;
const int INF = 0x7fffffff;
int N;
char pre[MAX];
char in[MAX];
char re[MAX];
struct Node {
char v;
struct Node* lChild = nullptr;
struct Node* rChild = nullptr;
};
Node* partition(int pl, int pr, int il, int ir) {
if(pl > pr) return nullptr;
Node* node = new Node();
node->v = pre[pl];
int i;
for (i = il; i < ir; ++i) {
if(in[i]==pre[pl]) break;
}
int len = i - il;
node->lChild=partition(pl + 1, pl + len, il, i - 1);
node->rChild=partition(pl + len + 1, pr, i + 1, ir);
return node;
}
void reOder(Node* node) {
if(node== nullptr) return;
reOder(node->lChild);
reOder(node->rChild);
printf("%c",node->v);
}
int main() {
//freopen("../data","r",stdin);
scanf("%s%s",in,pre);
Node* head = partition(0,(int)strlen(pre)-1,0,(int)strlen(in)-1);
reOder(head);
}