#include<bits/stdc++.h>
using namespace std;
typedef struct Tnode{
int date;
Tnode *le;
Tnode *ri;
}*Btree;
void CreatTree(Btree &T){//先序建树
int date;
cin>>date;
if(date==-1){
T=NULL;
}
else{
T=(Btree)malloc(sizeof(Tnode));
T->date=date;
CreatTree(T->le);
CreatTree(T->ri);
}
}
void preOrde(Btree T) {//先序遍历 ,先中后右再中
if(T==NULL) return;
else {
cout<<T->date<<' ';
preOrde(T->le);
preOrde(T->ri);
}
}
void inOrde(Btree T) {//中序遍历,先左后中再右
if(T==NULL) return ;
else {
inOrde(T->le);
cout<<T->date<<' ';
inOrde(T->ri);
}
}
void postOrde(Btree T) {//后序遍历,先左后右再中
if(T==NULL) return ;
else {
postOrde(T->le);
postOrde(T->ri);
cout<<T->date<<' ';
}
}
int main(){
Btree tt;
CreatTree(tt);//1 2 3 -1 -1 -1 4 5 -1 -1 6 -1 -1
cout<<"先序遍历 :";
preOrde(tt);
cout<<endl;
cout<<"中序遍历 :";
inOrde(tt);
cout<<endl;
cout<<"后序遍历 :";
postOrde(tt);
cout<<endl;
return 0;
}
二叉树如图所示,运行结果如下
1 2 3 -1 -1 -1 4 5 -1 -1 6 -1 -1
先序遍历 :1 2 3 4 5 6
中序遍历 :3 2 1 5 4 6
后序遍历 :3 2 5 6 4 1
建树遍历题 https://blog.csdn.net/TDD_Master/article/details/83186919