C语言实现二叉排序树
C语言实现二叉排序树并中序遍历验证
#include<stdio.h>
#include<stdlib.h>
typedef struct BitNode
{
int data;
struct BitNode *lchild,*rchild;
}BitNode;
void Enternumber(int **k)
{
int i;
*k=(int *)malloc(10*sizeof(int));
printf("请输入10个不相同整数 :");
for(i=0;i<10;i++) scanf("%d",&(*k)[i]);
}
BitNode** Search_BST(BitNode **L,int e)
{
if(!(*L)) return L;
else if(e==(*L)->data) return 0;
else if(e<(*L)->data) return Search_BST(&(*L)->lchild,e);
else return Search_BST(&(*L)->rchild,e);
}
void Insert_BST(BitNode **L,int e)
{
L=Search_BST(L,e);
if(!L)
{
printf("有数值相同");
exit(0);
}
else
{
(*L)=(BitNode *)malloc(sizeof(BitNode));
(*L)->data=e;
(*L)->lchild=(*L)->rchild=NULL;
}
}
void Print(BitNode *T)
{
if(T!=NULL)
{
Print(T->lchild);
printf(" %d",T->data);
Print(T->rchild);
}
}
void main()
{
int *k,i;
struct BitNode *L=NULL;
Enternumber(&k);
for(i=0;i<10;i++) Insert_BST(&L,k[i]);
printf("中序遍历结果:");
Print(L);
}
还没有评论,来说两句吧...