二叉樹,前序+中序=>後序
阿新 • • 發佈:2019-01-05
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int maxn = 1000+10;
char p[maxn], m[maxn], b[maxn];
int n;
struct node {
struct node *l, *r;
char c;
node(char _c) {
c = _c;
this->l = NULL;
this ->r = NULL;
}
};
node* bit(char *p, char *m, int len) { // 根結點,將二叉樹一分為二
int pos=-1;
if (len == 0)
return NULL;
for (int i=0; i<len; i++) {
if (p[0] == m[i]) { //查詢根結點
pos = i;
break;
}
}
node *root = new node(p[0]);
root->l = bit(p+1 , m, pos);
root->r = bit(p+pos+1, m+pos+1, len-pos-1);
return root;
}
void post(node *root) {
if (root == NULL)
return ;
post(root->l);
post(root->r);
printf("%c", root->c);
}
int main() {
while (scanf("%s%s", p, m)) {
n = strlen(p);
node *root =NULL;
root = bit(p, m, n);
post(root);
printf ("\n");
}
return 0;
}