#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;
}
前序 中序 -》 后序 (字符型数组)
最新推荐文章于 2020-09-25 16:36:12 发布