平衡二叉树-数据结构课程设计论文【可运行测试】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计
课程名称:平衡二叉树的生成
院系:信息工程学院
年级专业:10级计科
学号:
学生姓名:
指导教师:
开题时间: 2010 年 12 月 01 日
完成时间: 2010 年 12 月 31 日
信息工程学院
X X X X X X X数据结构课程设计成绩评定表
院系:信息工程学院年级专业:
学号:姓名:
摘要
本篇论文系计科专业10年末课程设计论文,按照相应要求写作而成。
主要讨论的是平衡二叉树的生成问题,借助本程序可以由用户输入数值,并生成平衡二叉树,并可以对数据进行方便的修改和删除添加,任意插入或删除一个结点后仍然要求任然构成平衡二叉树,并按中序遍历输出这棵平衡二叉树。·
本论文共由五个章构成,每个内容独立成章,各章下设相应子章节。
各个章节逐渐递进,分别是:
第一章:需求分析
第二章系统设计
第三章编码
第四章测试
第五章维护
本论文特点:
1.论述清楚,目录详尽,可以方便的查询相应章节,方便使用。
2.图文结合,几乎没一个子程序模块都有相应的流程图与之对应,有利于读者理解每
个子程序的设计思路。
3.模块分化清晰,每个模块独立成节,又彼此联系,深化了C语言模块化编程的特点。
4.测试模块配合对应的运行截图,真实可信,对读者理解程序的运行情况起到了很大
作用。
5.程序清单完整详细,解释详细。
目录
第一章需求分析 (1)
1.1功能描述1
1.2数据词典1
第二章系统设计 (3)
2.1 基本概念介绍3 2.2 总体设计8 2.3 插入结点10 2.4 删除结点11 2.5 中序遍历11 第三章编码 (12)
3.1 总体编码12
3.2 总流程图15
3.3 以指针T所指结点为根的二叉树作右平衡旋转处理16 第四章测试 (17)
4.1 创建二叉树测试17
4.2 插入结点测试19
4.3 删除结点测试20
4.4中序遍历结点测试21
4.5 先序遍历测试21 第五章维护 (22)
5.1维护22
第一章需求分析
1.1功能描述
平衡二叉树是数据结构中一个非常重要的概念。它对二叉树的优化和提高查询效率有重要的作用,它是动态查找的一个非常重要方法,它在实际生产中有着广泛的应用。
通过本程序的设计编写所要求达到的目的是:
1.充分理解和掌握二叉树、平衡二叉树的相关概念和知识。
2.掌握平衡二叉树的生成、结点删除、插入等操作过程。
3.并实现从键盘上输入一系列数据(整型),建立一棵平衡二叉树。
4.任意插入或删除一个结点后仍然要求构成平衡二叉树。
5.按先序和中序遍历输出这棵平衡二叉树。
1.2数据字典
平衡因子
任意结点左子树与右子树深度之差
时间复杂度
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
BST
二叉排序树(Binary Sort Tree:BST)
1、二叉排序树的定义
二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树:
①若它的左子树非空,则左子树上所有结点的值均小于根结点的值;
②若它的右子树非空,则右子树上所有结点的值均大于根结点的值;
③左、右子树本身又各是一棵二叉排序树。
AVL树
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O (log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
结点
包括一个数据元素及若干个指向其它子树的分支;例如,A,B,C,D等。
在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,简称结点。
在C语言中,链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据;二为下一个结点的地址,即指针域和数据域。
数据结构中的每一个数据结点对应于一个储存单元,这种储存单元称为储存结点,也可简称结点。