c语言排序树的问题
下面的代码调试的时候总是出错,是我的数据结构作业题,几乎没怎么用过c语言,求指导~
#include<stdio.h>
#include<malloc.h>
#define M 50
typedef struct node{
int data;
struct node *lchild, *rchild;
}BTNode, *BTREE;
void insert_bst(BTREE t, int item){//递归构造二叉排序树
if(t==NULL){
t = (BTREE)malloc(sizeof(BTNode));
t->data = item;
t->lchild = NULL;
t->rchild = NULL;
}
else if(item<t->data)
insert_bst(t->lchild, item);
else
insert_bst(t->rchild, item);
}
void in_order(BTREE t){
printf("%d",t->data);
BTREE stack[M], p=t;
int top = -1;
if(t!=NULL)
do{
while(p!=NULL){
stack[++top] = p;
p = p->lchild;
}
p = stack[top--];
printf("%d ",p->data);
p = p->rchild;
}while(!(p==NULL&&top==-1));
}
void main(){
int item;
BTREE t=NULL;//不声明为NULL会随机分配值产生异常
while(1){
scanf("%d", &item);
printf("%d", item);
if(item!=-1)
insert_bst(t, item);
else
break;
}
in_order(t);
}