- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计报告
题目 : 排序二叉树的应用
一、设计任务
程序在运行时,可以执行有关排序二叉树的操作:如插入一个元素、删除一个元素、查找一个元素、打印一个元素等。
用递归算法遍历二叉树。
二 、设计分析
1 、 二叉树是n(n=0)个结点的有限集合,它或为空树(n=0),或由一个根结点和两棵分别称为根的左子树和右子树的互不相交的二叉树组成。二叉树是一个递归定义。一棵深度为k且有2k-1个结点的二叉树称为满二叉树。对满二叉树的结点进行连续编号,约定编号从根结点起,自上而下,自左而右。
2 、 二叉树的存储结构
1) 顺序存储结构:二叉树可以采用顺序存贮结构,即用一维数组来存放二叉树的数据元素。它是按照满二叉树的结点层次编号层次来依次存放二叉树中的数据元素。
2)链式存储结构:设计不同的结点结构可构成不同形式的链式存储结构。
在本程序中,采用顺序存储结构,对二叉树进行插人、删除、查找、遍历等操作。
3 、 二叉树的建立
已知一棵二叉树,共有n个结点,建立的方法如下:
照完全二叉树的编号方法,对该二叉树进行编号。
次输入一个结点的值x和该结点的编号k,动态申请一块空间来存放该结点,空间的地址为p。
把p值赋给adr[k]中。
如果k=1,转到5;否则,把p的值填入其父结点的指针域中。p的父结点地址为adr[k/2],若k为偶数,则做adr[k/2]-lc=p;若为奇数,则做adr[k/2]-rc=p。
重复2~4,直到全部顶点数据输入完为止。
4 、 遍历二叉树,即如何按某条搜索路径寻访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。
一棵非空二叉树是由根结点(D)、左子树(L)和右子树(R)三个基本部分组成。要遍历这三个基本部分,可以有六种可能的顺序。若限定先左后右,则只有三种情况:先序遍历(DLR)、中序遍历(LDR)、后序遍历(LRD)。
在本程序中,遍历二叉树函数的核心是以一个简单的case语句来实现的。
5 、 二叉树的插入操作:这个操作首先生成一个新的结点结构,把数据存入新结点,然后搜索二叉树寻找插入结点的位置,再把新结点连接到二叉树。把这个操作定义为一个函数,其函数名为instree。
6 、 二叉树中元素的查找:在许多情况下,我们需要在一棵已知的二叉树中查找某个元素,以确定树中是否存在这个元素。这种查找与链表数据结构中查找成员的情况极类似。查找函数名字定义为membertree。
7 、 从二叉树中删除一个成员:进行成员删除操作时,首先必须用递归函数遍历这棵树,找到这个元素。当找到这个元素之后,还要考虑以下四种不同的情况:删除一个终端结点;删除只有一个左孩子的结点;删除只有一个右孩子的结点;删除带有两个孩子的结点。删除函数名字定义为deltree。
8 、 在主函数main( )中,除了初始化指针tp之外,用循环语句while(1)在屏幕上显示出主菜单:
I ——Insert an element into tree
D——Delete an element from the tree
F——Find a member in the tree
P——Print the tree
Q——Quit
用户可以根据自己的需要,从键盘键入不同的合法字母(例如‘I’),而进入不同的树处理函数进行处理。
不同树处理函数的选择是通过简单的switch-case语句来实现,其中包括了若错技术。如果用户从键盘输入的不是’I’,’D’,’F’,’P’,’Q’这些合法字符,则程序会先告诉用户输入出错,让用户重新输入,直到输入选择正确为止。
三 、设计思路
1 、主函数main() :由case语句组成,支持程序选择,当运行时,可以执行有关二叉树的操作:如插入一个元素、删除一个元素、查找一个元素、打印一个元素等。
2 、主要的树函数的说明部分
1)void prttree(treeptr tnode,int t);//打印树。该函数在屏幕上打印出存放在树中的元素,如果是空树,则无输出。
参数:tnode-指向根结点的指针;
t-打印方式:0:前序 1:中序 2:后序(用递归算法遍历二叉树)。
2)treeptr instree(char *s,int key,treeptr tnode);//插入一个元素。该函数把一个元素插入到二叉树中。
参数:s,key-接收插入数据;
tnode-是指向根结点的指针。
3)treeptr membertree(char *s,treeptr tnode);//查找一个元素。该函数测定树中的指定元素,如果元素是树中的成员,则函树返回该元素,否则返回NULL指针.。
参数:s-
您可能关注的文档
最近下载
- 深度学习基础及应用(人工智能、大数据技术、计算机等相关专业)全套教学课件.pptx
- 《深度学习基础及应用》教案 第9课 利用循环神经网络进行文本预测和分类(二).docx VIP
- 《深度学习基础及应用》教案 第8课 利用循环神经网络进行文本预测和分类(一).docx VIP
- 《深度学习基础及应用》教案 第6课 利用卷积神经网络进行图像处理(一).docx VIP
- 《深度学习基础及应用》教案 第10课 利用生成对抗神经网络进行图像生成.docx VIP
- 《深度学习基础及应用》教案 第8课 利用循环神经网络进行文本预测和分类(一).pdf VIP
- 《深度学习基础及应用》教案 第5课 构建神经网络(三).docx VIP
- 《深度学习基础及应用》教案 第2课 夯实深度学习开发基础.docx VIP
- 人教版五年级上册数学精品教学课件 第3单元 3.3 商的近似数.ppt VIP
- 《深度学习基础及应用》教案 第10课 利用生成对抗神经网络进行图像生成.pdf VIP
文档评论(0)