前序 中序 -》 后序 (字符型数组)

来源:互联网 发布:福建工程学院软件学院 编辑:程序博客网 时间:2024/06/05 19:33
#include<stdio.h>#include<iostream>#include<stack>#include<string.h>#include <queue>using namespace std;char before[100], in[100];struct Node{    Node* lchild;    Node* rchild;    char data;    Node(){  //自带的构造函数        lchild = NULL;        rchild = NULL;    }};Node* build_tree(char before[], char in[], int length){    if(length == 0) return NULL;    int pos = 0;    while(in[pos] != before[0]){        pos++;    }    Node *temp = new Node(); //需要申请Node空间    temp -> data = before[0];    temp -> lchild = build_tree(before + 1, in, pos);    temp -> rchild = build_tree(before + pos + 1, in + pos + 1, length - pos - 1);    return temp;}void Traverse_Post(Node *root){    if(root ->lchild != NULL){        Traverse_Post(root ->lchild);    }    if(root ->rchild != NULL){        Traverse_Post(root ->rchild);    }    if(root != NULL)        cout << root -> data;}int main(){    freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    int n;    while(scanf("%s", before) != EOF){ //掌握输入输出的方法 输入字符串的时候 没有&        scanf("%s", in);        int L1 = strlen(before); //遇到'\0'截止 即输入的有效字符 (并不是指申请内存的长度)        int L2 = strlen(in);        //cout << L1 << " " << L2;        Node * root = build_tree(before, in, strlen(before));        Traverse_Post(root);        cout << endl;    }    return 0;}


原创粉丝点击