改个程序~~关于数据结构-树的。。用C++

#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);
}

第1个回答  2010-11-10
我可以给你传个代码,邮箱给我,给我加分哦,我这个挺全的
传到你邮箱里面了,给我加分昂
请参考
第2个回答  2010-11-14
void Preorder (test *T)
{ // 先序遍历二叉树
if (T) {
printf(本回答被网友采纳
第3个回答  2010-11-10
话说你要改成什么样的?