#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct np{
int date;
struct np *left,*right;
} node;
node *create(void)
{
return ((node*)malloc(sizeof(node)));
}
node *t(node *a,int d)/*建立二叉树*/
{
if (a==NULL) {
a=create();
a->left =a->right =NULL;
a->date=d;
}
else if (d>=a->date) {
a->right =t(a->right,d);
}
else if (d<a->date) {
a->left =t(a->left ,d);
}
return a;
}
void prt(node *r)
{
if(r) {
cout<<r->date<<" ";
prt(r->left );
prt(r->right );
}
}
void mid(node *r)
{
if(r)
{
mid(r->left);
cout<<r->date<<" ";
mid(r->right);
}
}
void beh(node *r)
{
if(r)
{
beh(r->left);
beh(r->right);
cout<<r->date<<" ";
}
}
int main(void)
{
node *bst=NULL;
int i;
cout<<"从键盘输入整数,以-24结束输入:";
while (scanf("%d",&i),i!=-24)
{
bst=t(bst,i); /*生成二叉排序数*/
}
cout<<"前序遍历:";
prt(bst);
cout<<endl;
cout<<"中序遍历:";
mid(bst);
cout<<endl;
cout<<"后序遍历:";
beh(bst);
cout<<endl;
system("pause");
return 0;
}