7-9 二叉树的创建与遍历 (10分)
通过带空指针信息的先根序列(亦称先序序列)创建二叉树,并进行先根(先序)、中根(中序)、后根(后序)遍历。二叉树结点数据域值为不等于0的整数(可能是正数也可能是负数),空指针用0表示,例如1 5 8 0 0 0 6 0 0表示如下图的二叉树。
输入格式:
输入为一组用空格间隔的整数,表示带空指针信息的二叉树先根序列。其中空指针信息用0表示。二叉树结点个数不超过150000,高度不超过6000。输入数据保证二叉树各结点数据值互不相等。
输出格式:
输出为3行整数,每个整数后一个空格。第1行为该二叉树的先根序列,第2行为中根序列,第3行为后根序列。
输入样例:
1 5 8 0 0 0 6 0 0
输出样例:
1 5 8 6
8 5 1 6
8 5 6 1
我的代码:
#include <iostream>
using namespace std;
struct Tree{
int data;
Tree* lt;
Tree* rt;
};
void Creat(Tree*& t){
t=(struct Tree*)malloc(sizeof(struct Tree));
cin>>t->data;
if(t->data==0){
t=NULL;
return;
}
Creat(t->lt);
Creat(t->rt);
return;
}
void front(Tree* t){
while(t){
cout<<t->data<<" ";
front(t->lt);
front(t->rt);
break;
}
}
void mid(Tree* t){
while(t){
mid(t->lt);
cout<<t->data<<" ";
mid(t->rt);
break;
}
}
void behind(Tree* t){
while(t){
behind(t->lt);
behind(t->rt);
cout<<t->data<<" ";
break;
}
}
int main(){
struct Tree* t;
Creat(t);
front(t);cout<<endl;
mid(t);cout<<endl;
behind(t);
return 0;
}