用顺序和二叉链表作存储结构实现二叉排序树全代码.docx
《用顺序和二叉链表作存储结构实现二叉排序树全代码.docx》由会员分享,可在线阅读,更多相关《用顺序和二叉链表作存储结构实现二叉排序树全代码.docx(23页珍藏版)》请在第壹文秘上搜索。
1、安徽新华学院数据结构课程设计报告题目:用顺序和二叉树存储结构实现二叉树排序学院:信息工程专业:信息与计算科学班级:12信科本一班姓名:李智学号:1242155110指导教师:李明设计时间:20131216至2(H31230课程设计任务书-设计任务研究关于如何创立二叉排序树并对树进行遍历,查找和删除等操作,同时关注用顺序和二叉链表作存储结构带来的区别。二.设计要求(1) .利用顺序存储和链式存储两种算法计算实现二叉搜索树的创立。(2) .利用顺序存储和链式存储两种算法计算实现中序遍历。(3) .利用顺序存储和链式存储两种算法计算实现查找结点。(4) .利用顺序存储和链式存储两种算法计算实现删除结
2、点。.设计期限2013-12-16三2013-12-30前言数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科本课程设计中的二叉排序树,可以用顺序存储和链式存储两种算法计算。本课程设中的二叉排序树,一共要实现四项根本的功能。它们分别是二叉搜索树的创立、中序遍历、查找结点和删除结点。二叉树是树形结构的一个重要的类型,二叉树是n(n=0)个结点的有限集,它或者是空集(n=0),或者由个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。二叉树的存储结构和算法比拟简单,特别适合计算机处理。即使一般形式的树也可简单的转换为二叉树。二叉树的顺序存
3、储结构是把二叉树的所有结点,按照一定的次序顺序,存储到一片连续的存储单元中。遍历二叉树就是沿某有前序遍历、中条搜索路径周游二叉树,对树中每个结点访问一次且仅访问一次。在遍历方案中主要序遍历、后序遍历。现实中有许多应用到二叉树的例子,所以我们要把理论与现实结合起来。在学习中主要掌握怎么求二叉树的高度、叶子结点个数、总结点个数以及熟练三种遍历的方法。目录1需求分析21. 1问题的提出2任务与分析22总体设计2二叉排序树的建立2二叉排序树的中序遍历3二叉排序树中元素的查找3二叉排序树中元素的删除32. 5总体设计流程图3详细设计错误!未定义书签。3.1 中序遍历模块73.2 删除模块74编码与调试9
4、4.1顺序存储104.2二叉链表存储105总结11总结错误!未定义书签。心得体会12参考文献12全部代码13二叉链表结构C13二叉链表结构C+15顺序存储结构Cl81需求分析1.1 问题的提出研究关于如何创立二叉排序树并对树进行遍历,查找和删除等操作,同时关注用顺序和二叉链表作存储结构带来的区别。1.2 任务与分析用顺序和二叉链表作存储结构实现二叉排序树:(I)以回车(n)为输入结束标志,输入数列1.,生成一棵二叉排序树T;(2)对二叉排序树T作中序遍历,输出结果;(3)输入元素X,查找二叉排序树T,假设存在含X的结点,那么删除该结点,并作中序遍历(执行操作2);否那么输出信息“无x”O2总体
5、设计二叉排序树的建立建二叉树的结点至少应当包含三个域,分别存放结点的数据data,左子女结点指针IeftChild和右子女结点指针righlChik1.整个二叉树的链表要有一个表头指针,它指向二叉树的根结点,其作用是当作树的访问点从空的二叉排序树开始,经过一系列的查找插入操作以后,生成了一棵二叉排序树。根据二叉排序树的定义,建立一棵二叉排序树的过程是按照待排序序列元素的先后次序,不断动态生成二叉树的结点,逐个插入到二叉树中。假设P为根结点指针,b为当前待插入元素,其过程可以描述为:假设为空树(p=nil),动态生成一个结点,其数据域为当前待插入元素b,左、右指针域为“空”,P指向该结点。假设非
6、空树,比拟b与根结点数据daia(p)如果bdata(p),将b插入右子树中;左、右子树的插入方式与二叉排序树的插入方式相同。不断调用上述的插入过程,直到所有待排序序列均排入后,就形成一棵二叉排序树。由此可见,建立二叉排序树就是屡次调用二叉排序树的插入算法。二叉排序树的中序遍历中序遍历二叉树算法的框架是:假设二叉树为空,那么空操作;否那么中序遍历左子树(1.);访问根结点(V);中序遍历右子树(R)o0二叉排序树中元素的查找在二叉排序树上进行查找,是一个从根结点开始,沿某一个分支逐层向下进行比拟判等的过程。它可以是一个递归的过程。假设我们想要在二叉排序树中查找关键码为X的元素,查找过程从根结点
7、开始。如果根指针为NU1.1.,那么查找不成功;否那么用给定值X与根结点的关键码进行比拟;如果给定值等于根结点的关键码,那么查找成功,返回查找成功的信息,并报告查找到的结点地址。如果给定值小于根结点的关键码,那么继续递归查找根结点的左子树;否那么,递归搜索根结点的右子树。二叉排序树中元素的删除对于二叉排序树,删去树上的一个结点相当于删去有序序列中的一个记录,只要在删除某个结点之后依旧保持二叉排序树的特性即可。假设在二叉排序树上被删除结点为*P(指向结点的指针是P),其双亲结点为*f(结点指针为f),且不失一般性,可设*P是*f的左孩子,假设*P结点为叶子结点,即P和1均为空,只需修改其双亲结点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺序 二叉 链表作 存储 结构 实现 二叉排序树 代码