
全部展开
#include
#include
#include
#define INFMT“%d”
#define OUTFMT“%d”
/ *#定义空0L * /
#define BOOL int
#define TRUE 1
#define假0
#define LEN 10000
typedef int ElemType;
typedef struct BSTNode
{
ElemType数据;
struct BSTNode * lchild,* rchild;
} BSTNode,* BSTree;
/ *插入新节点* /
无效插入(BSTree *树,ElemType项目)
{
BSTree节点=(BSTree)malloc(sizeof(BSTNode));
node-> data = item;
node-> lchild = node-> rchild = NULL;
如果(!*树)
*树=节点;
其他
{
BSTree游标= *树;
同时(1)
{
if(项目
{
如果(NULL == cursor-> lchild)
{

cursor-> lchild = node;
休息;
}
cursor = cursor-> lchild;
}
其他
{
如果(NULL == cursor-> rchild)
{
cursor-> rchild = node;
休息;
}
cursor = cursor-> rchild;
}
}
}
返回;
}
/ *查找指定值* /
BSTree搜索(BSTree树,ElemType项目)
{
BSTree游标=树;
while(光标)
{
如果(项目==光标->数据)
返回光标;
否则,如果(项
cursor = cursor-> lchild;
其他
cursor = cursor-> rchild;
}
返回NULL;
}
/ *遍历中缀* /

无效顺序(BSTree树)
{
BSTree游标=树;
如果(光标)
{
顺序(光标-> lchild);
printf(OUTFMT,光标->数据);
顺序(光标-> rchild);
}
}
/ *回收资源* /
无效清理(BSTree树)
{
BSTree光标=树,temp = NULL;
如果(光标)
{
清理(cursor-> lchild);
清理(cursor-> rchild);
免费(光标);
}
}
/ *生成一组随机数* /
void randnum(int * a,int s)
{
int i,j,mod = s * 10;
srand(时间(NULL));
for(i = 0; i
{
a [i] = rand()%mod +1;
对于(j = 0; j
{
if(a [i] == a [j])
{
a [i] = rand()%mod +1;

j = -1;
继续;
}
}
}
}
void main()
{
ElemType项目;
字符选择;
BSTree根= NULL,重新输入; / *必须分配一个NULL值c语言 二叉排序树,否则会发生错误* /
布尔值=否;
printf(“ ***欢迎使用二进制排序树演示程序*** \ n \ n”);
printf(“请选择如何创建树: \ n”);
printf(“ 1. 手动输入数据以创建二进制排序树\ n”);
printf(“ 2. 自动生成数据以创建二进制排序树\ n”);
做
{
scanf(“%c”,&选择);
getchar();
如果(选择=='1'||选择=='2')
finish = TRUE;
}而(FALSE ==完成);
切换(选择)
{
情况“ 1”:
{
printf(“请输入数据(-10000结尾): \ n”);
同时(1)
{
scanf(INFMT和项目);
如果(-10000!=物品)
插入(&根,项目);
其他

休息;
}
休息;
}
情况'2':
{
int ia [LEN],i = 0,循环= LEN;
randnum(iac语言 二叉排序树,LEN);
while(循环)
{
插入(&root,ia [i ++]);
}
休息;
}
}
printf(“ \ n \ nCreated ... \ n”);
顺序(根);
printf(“ \ n \ n”);
/ *查找二进制排序树的测试* /
做
{
printf(“ \ n请输入搜索数据: ”);
scanf(“%d”,&item);
getchar();
printf(“正在搜索... \ n”);
ret =搜索(根,项目);
如果(NULL == ret)
printf(“查找失败!”);
其他
printf(“找到成功!”);
printf(“ \ n继续按y,然后按其他键退出. \ n”);
choice = getchar();
} while(choice =='y'||选择=='Y');
清理(根);
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-152723-1.html