数据结构与实验报告.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
资料 数据结构实验报告 题目要求 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);

文档评论(0)

hkfgmny + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档