- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
..
数据结构实验报告
题目要求
1) 编程实现二叉排序树,包括生成、插入,删除;
2) 对二叉排序树进行先根、中根、和后根非递归遍历;
3) 每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。
4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么?
解决方案
对于前三个题目要求,我们用一个程序实现代码如下
#includewindows.h
#include stdio.h
#include malloc.h
#include Stack.h //栈的头文件,没有用上
typedef int ElemType; //数据类型
typedef int Status; //返回值类型
//定义二叉树结构
typedef struct BiTNode{
ElemType data; //数据域
struct BiTNode *lChild, *rChild;//左右子树域
}BiTNode, *BiTree;
int InsertBST(BiTree T,int key){//插入二叉树函数
if(T==NULL)
{
T = (BiTree)malloc(sizeof(BiTNode));
T-data=key;
T-lChild=T-rChild=NULL;
return 1;
}
else if(keyT-data){
InsertBST(T-lChild,key);
}
else if(keyT-data){
InsertBST(T-rChild,key);
}
else
return 0;
}
BiTree CreateBST(int a[],int n){//创建二叉树函数
BiTree bst=NULL;
int i=0;
while(in){
InsertBST(bst,a[i]);
i++;
}
return bst;
}
int Delete(BiTree T)
{
BiTree q,s;
if(!(T)-rChild){ //右子树为空 重接它的左子树
q=T;
T=(T)-lChild;
free(q);
}else{
if(!(T)-lChild){ //若左子树空 则重新接它的右子树
q=T;
T=(T)-rChild;
}else{
q=T;
s=(T)-lChild;
while(s-rChild){
q=s; s=s-rChild;
}
(T)-data=s-data; //s指向被删除结点的前驱
if(q!=T)
q-rChild=s-lChild;
else
q-lChild=s-lChild;
free(s);
}
}
return 1;
}
//删除函数,在T中 删除key元素
int DeleteBST(BiTree T,int key){
if(!T) return 0;
else{
if(key==(T)-data) return Delete(T);
else{
if(key(T)-data)
return DeleteBST(T-lChild,key);
else
return DeleteBST(T-rChild,key);
}
}
}
int PosttreeDepth(BiTree T){//求深度
int hr,hl,max;
if(!T==NULL){
hl=PosttreeDepth(T-lChild);
hr=PosttreeDepth(T-rChild);
max=hlhr?hl:hr;
return max+1;
}
else
return 0;
}
void printtree(BiTree T,int nlayer){//打印二叉树
if(T==NULL) return ;
printtree(T-rChild,nlayer+1);
for(int i=0;inlayer;i++){
printf( );
}
printf(%d\n,T-data);
printtree(T-lChild,nlayer+1);
您可能关注的文档
- 世界经典营销案例解析(经典市场营销案例149篇).docx
- 市场部岗位说明书.docx
- 市场营销案例习题.docx
- 市场营销试题与答案(一).docx
- 市政府大楼物业投标书.docx
- 试论校园暴力犯罪成因及防治.docx
- 试题2-2017六西格玛黑带模拟测试题含答案.docx
- 适合聚会、party和联谊的小游戏大全.docx
- 适合做手机铃声的首英文歌.docx
- 室内设计八大风格.docx
- 2024年江西省寻乌县九上数学开学复习检测模拟试题【含答案】.doc
- 2024年江西省省宜春市袁州区数学九上开学学业水平测试模拟试题【含答案】.doc
- 《GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语》.pdf
- 中国国家标准 GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语.pdf
- GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- 《GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构》.pdf
- 中国国家标准 GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 中国国家标准 GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 《GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南》.pdf
文档评论(0)