#include <stdio.h>
#include <stdlib.h>
#define max 50
typedef struct liuyu
{
int data;
struct liuyu *lchild,*rchild;
}test;
liuyu *root,*p,*q[max];
int sum=0;
int m=sizeof(test);
void insert_data(int x) /*生成二叉排序树*/
{
liuyu *p,*q,*s;
s=(test*)malloc(m);
s->data=x;
s->lchild=NULL;
s->rchild=NULL;
if(!root)
{
root=s;
}
p=root;
while(p) /*如何接入二叉排序树的适当位置*/
{
q=p;
if(p->data==x)
{
printf("data already exist! \n");
return;
}
else if(x<p->data)
p=p->lchild;
else
p=p->rchild;
}
if(x<q->data)
q->lchild=s;
else
q->rchild=s;
}
void Preorder (test T)
{ // 先序遍历二叉树
if (T) {
printf("%d",T->data); // 访问根结点
Preorder(T->lchild); // 遍历左子树
Preorder(T->rchild);// 遍历右子树
}
}
void main() /*先生成二叉排序树*/
{
int i,x;
i=1;
root=NULL; /*千万别忘了赋初值给root!*/
do
{
printf("please input data%d:",i);
i++;
scanf("%d",&x); /*从键盘采集数据,以-9999表示输入结束*/
if(x==-9999){
printf("\nNow output data value:\n");
}
else
insert_data(x); /*调用插入数据元素的函数*/
}
while(x!=-9999);
Preorder(root);
}