#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;
}
前序 中序 -》 后序 (字符型数组)
最新推荐文章于 2021-06-05 17:57:17 发布
本文介绍了一种使用先序遍历和中序遍历构建二叉树的方法,并实现了后序遍历输出。通过递归算法创建节点,最终完成整棵树的构建。适用于计算机科学与技术领域的学习者。
2292

被折叠的 条评论
为什么被折叠?



