#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
int ltag,rtag;
}BiTNode,*BiTree;
BiTNode *pre = NULL;
bool insertBiTNode(BiTree &B,int e){
BiTNode *temp;
if(B==NULL){
temp = (BiTNode *)malloc(sizeof(BiTNode));
temp->lchild = temp->rchild = NULL;
temp->ltag = temp->rtag = 0;
temp->data = e;
B=temp;
return true;
}
if(e<B->data){
insertBiTNode(B->lchild,e);
}else if(e>B->data){
insertBiTNode(B->rchild,e);
}
return true;
}
void visit(BiTree &B){
cout<<B->data<<" ";
}
void preOrder(BiTree B){
if(B!=NULL){
visit(B);
preOrder(B->lchild);
preOrder(B->rchild);
}
return ;
}
void inOrder(BiTree B){
if(B!=NULL){
inOrder(B->lchild);
visit(B);
inOrder(B->rchild);
}
return ;
}
void postOrder(BiTree B){
if(B!=NULL){
postOrder(B->lchild);
postOrder(B->rchild);
visit(B);
}
return ;
}
int main(){
BiTree B=NULL;
insertBiTNode(B,10);
insertBiTNode(B,8);
insertBiTNode(B,1);
insertBiTNode(B,3);
insertBiTNode(B,20);
insertBiTNode(B,16);
insertBiTNode(B,30);
cout<<"前序遍历开始"<<endl;
preOrder(B);
cout<<endl;
cout<<"前序遍历结束"<<endl;
cout<<"中序遍历开始"<<endl;
inOrder(B);
cout<<endl;
cout<<"中序遍历结束"<<endl;
cout<<"后序遍历开始"<<endl;
postOrder(B);
cout<<endl;
cout<<"后序遍历结束"<<endl;
}