3,881
社区成员
发帖
与我相关
我的任务
分享void inorder(bitree t)
{
if(t)
{
inorder(t->lchild);
printf("%d ",t->data);
inorder(t->rchild);
}
else
return;
}inorder最好这样,加个递归出口
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(struct btnode)
typedef struct btnode
{
int data;
struct btnode *lchild,*rchild;
}Bitnode,*bitree;
bitree create();
void insert(bitree *p,bitree s);
void inorder(bitree t);
void main()
{
bitree h;
printf("input binary sort tree :");
h=create();
inorder(h);
}
bitree create()
{
bitree t,h;
int k;
t=NULL;
scanf("%d",&k);
while(k)// <=0结束
{
h=(bitree)malloc(LEN);
h->data=k;
h->lchild=NULL;
h->rchild=NULL; //这里,都要初始化
insert(&t,h);
scanf("%d",&k);
}
return t;
}
void insert(bitree *p,bitree s)
{
if(*p==NULL)
*p=s;
else if(s->data <(*p)->data)
insert(&((*p)->lchild),s);
else if(s->data>(*p)->data)
insert(&((*p)->rchild),s);
}
void inorder(bitree t)
{
if(t)
{
inorder(t->lchild);
printf("%d",t->data);
inorder(t->rchild);
}
}注意create函数