- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验六
洛阳理工学院实验报告
系部 计算机系 班级 B130503 学号 姓名 课程名称 数据结构 实验日期 2014.12.11 实验名称 二叉排序树的创建和查找理解二叉排序树的递归定义,掌握二叉排序树的创建、插入、查找基本操作的实现。
实验内容与算法思想:
内容:
利用递归算法创建一棵二叉排序树,并在创建的二叉排序树上实现插入、查找等操作。1.菜单 2.建立二叉排序树
中序输出序列
4.插入操作
5.查找操作
实验总结:
一开始在执行插入操作时,输入与子叶相同的数字插入时会失败,在仔细看插入函数时知道了问题所在。原来是在输入数字与二叉排序树中元素比较大小时只考虑到了大于、小于的情况。在将语句else if(key(*bst)-key)的条件改为小于等于后就可以在二叉排序树中插入与子叶相同的数字了。
附:源程序:
#includestdio.h
#includestdlib.h
#includemalloc.h
#define ENDKEY -1
#define NULL 0
#define OK 1
typedef struct node
{
int key;
struct node *lchild,*rchild;
}BSTNode, *BSTree;
int InsertBST(BSTree *bst,int key) //插入函数
{
BSTree s;
if (*bst==NULL)
{
s=(BSTree)malloc(sizeof(BSTNode));
s-key=key;
s-lchild=NULL;
s-rchild=NULL;
*bst=s;
return OK;
}
else if(key=(*bst)-key)
{
InsertBST(((*bst)-lchild),key);
return OK;
}
else if(key(*bst)-key)
{
InsertBST(((*bst)-rchild),key);
return OK;
}
}
void CreateBST(BSTree *bst)
{
int key;
*bst=NULL;
scanf(%d, key);
while (key!=ENDKEY)
{
InsertBST(bst, key);
scanf(%d, key);
}
}
BSTree SearchBST(BSTree bst, int key)
{
if(!bst)
return NULL;
else if(bst-key==key)
return bst; //查找成功
else if(bst-keykey)
return SearchBST(bst-lchild,key);
else
return SearchBST(bst-rchild,key);
}
void InOrder(BSTree root) //中序遍历
{
if (root!=NULL)
{
InOrder(root-lchild);
printf(%d ,root-key);
InOrder(root-rchild);
}
}
void main()
{
int k,d,y,m,n,tag;
BSTree T;
while(1)
{
tag=1;
y=0;
printf(***************************************\n);
printf( 0. 建立二叉排序树\n);
printf( 1. 中序输出二叉排序树\n);
printf( 2. 向二叉排序树中插入元素\n);
printf( 3. 查找二叉排序树中元素\n);
printf( 4. 退出\n);
printf(***************************************\n);
printf(请输入一个数字执行相应操作:\n);
scanf(%d,k);
system(CLS);
switch(k)
{
case 0:
printf(请输入序列,建立二叉排序树,以-1结束:\n);
CreateBST(T);
printf(建立完成,任意键返回主菜单\n);
getch();
printf(\n);
sys
文档评论(0)