关于二叉排序树的创建查找和插入的问题
#include <stdio.h>#include <malloc.h>
#include <stdlib.h>
typedef struct BTnode{
int data;
struct BTnode *lchild,*rchild;
}BTNODE,*PBTNODE;
PBTNODE insert(PBTNODE T,PBTNODE S);
PBTNODE create(PBTNODE T);
void inordertraverse_BTree(PBTNODE T);
int main (void)
{ PBTNODE T,S;
T=S=NULL;
T=create(T);
printf("二叉排序树遍历");
inordertraverse_BTree(T);
return 0;
}
PBTNODE insert(PBTNODE T,PBTNODE S)
{ if(T==NULL)
{ T=S;
return T;
}
else if((T->data)<(S->data))
insert(T->rchild,S);
else
insert(T->lchild,S);
}
PBTNODE create(PBTNODE T)
{ PBTNODE S;
int key,n,i;
printf("请输入个数:");
scanf("%d",&n);
printf("请输入数字:");
for(i=1;i<=n;i++)
{
S=(BTNODE*)malloc(sizeof(BTNODE));
scanf("%d",&key);
S->data=key;
S->lchild=S->rchild=NULL;
T=insert(T,S);
}
return T;
}
void inordertraverse_BTree(PBTNODE T){
if(NULL!=T)
{ if(NULL!=T->lchild)
{ inordertraverse_BTree(T->lchild);}
printf("%d\n",T->data);
if(NULL!=T->rchild)
{ inordertraverse_BTree(T->rchild);
}
}
}