1. 程式人生 > >二叉樹,前序+中序=>後序

二叉樹,前序+中序=>後序

#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; }