完全二叉树操作演示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽省巢湖学院计算机与信息工程学院
课程设计报告
课程名称《数据结构》
课题名称完全二叉树操作演示
专业班级计算机科学与技术专升本1班
学号********、********、********
姓名李鹏王帅李泳波
联系方式
指导教师严小燕
完成日期: 2014年12月27 日
目录
1 数据结构课程设计任务书 (1)
1.1题目 (1)
1.2目的 (1)
1.3要求 (1)
2 总体设计 (1)
2.1功能模块设计 (1)
2.2所有功能模块流程图 (1)
3 详细设计 (2)
3.1程序中所采用的数据结构及存储结构的说明 (2)
3.2算法设计思想 (3)
3.3主要的功能函数 (3)
4 调试与测试 (3)
4.1调试方法与步骤 (4)
4.2测试结果分析与讨论 (4)
4.3测试过程中遇到的主要问题及采取的解决措施 (5)
5 时间复杂度分析 (6)
6 程序清单 (6)
7 总结 (12)
参考文献 (13)
1 数据结构课程设计任务书
1.1题目
完全二叉树操作演示
1.2目的
(1)掌握二叉树的概念和性质。
(2)掌握完全二叉树存储结构。
(3)掌握完全二叉树的基本操作。
1.3 要求
(1)创建完全二叉树(用字母表示节点)(用顺序方式存储)。
(2)求二叉树的深度和叶子结点数。
(3)实现二叉树的前序、中序、后序和层次遍历。
(4)查找给定结点的双亲、祖先和左右孩子节点。
2 总体设计
2.1 功能模块设计
根据课程设计题目的功能要求,各个功能模块的组成框图如图1:
图 1 功能组成框图
2.2 所有功能模块流程图
设计好功能模块后,各个模块的关系如下图2:
图 2 流程图
3 详细设计
3.1程序中所采用的数据结构及存储结构的说明
(1)整个程序采用结构体与顺序表相结合的编程方法一共完成了7个功能。在你输入错误时有报错消息,这样使整个程序运行起来更加完整。程序中有若干个子函数被主函数调用执行。结构体定义如下:
#define MAX 100 //定义100个节点
typedef struct
{
char dat; //节点信息
}node;
typedef struct Tree //节点组成树
{
int length;
node *r; //指向根节点
}Tree;
3.2 算法设计思想
完全二叉树具有以下几个性质,由此可设计出相应算法。 性质1 完全二叉树约定编号从根节点起,自上而下,自左自由。 由此设计出顺序存储结构且进行层次遍历时,只需输出顺序表中存储的元素即可。
性质2 具有n 个结点的完全二叉树的深度为 。 由此设计出深度计算函数。
性质3 完全二叉树第i 层上的结点数目最多为2i-1(i≥1)。
由此设计出每层节点个数函数,在显示完全二叉树时可以找到其最左边的孩子节点。
性质4 在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点且叶子节点个数为(n+1)/2。
由此设计出叶子节点函数。
性质5 在完全二叉树中,若根节点为i ,则左孩子节点为2i,右孩子节点为2i+1。
由此采用递归思想,可以对完全二叉树进行前序、中序、后序遍历和给定节点找其双亲及孩子。
3.3主要的功能函数
CreatTree(Tree &t) //创建完全二叉树 LevCount(int n) //统计每层最多节点个数 OutputTree(Tree &t) //显示完全二叉树 Depth(Tree &t) //求树深 Leaf(Tree &t) //叶子节点
PreOrder(Tree &t,int r) //先序遍历 InOrder(Tree &t,int r) //中序遍历 PostOrder(Tree &t,int r) //后序遍历 LeOrder(Tree &t) //层次遍历
Search(Tree &t,char q) //查找给定结点的双亲、左右孩子 完善以上函数,就可以设计出完全二叉树的操作了。
4 调试与测试
1log 2 n
4.1调试方法与步骤
第一步:建立完全二叉树,输入节点个数和节点。
第二步:选择要操作的对象,比如显示完全二叉树,按下电脑键盘1。查找双亲及孩子功能函数在操作时需要输入信息,按照相应提示输入相应信息即可运行,输入不对时,程序会有报错提示信息。
4.2测试结果分析与讨论
假定完全二叉树节点数为9个,节点信息为a、b、c、d、e、f、g、h、i。操作结果如下图所示:
(1)操作界面
图3 操作界面
(2)创建完全二叉树
图4 创建完全二叉树
(3)显示完全二叉树
图5 显示完全二叉树(4)完全二叉树深度
图6 完全二叉树深度(5)完全二叉树层次遍历
图7 完全二叉树层次遍历(6)完全二叉树前序、中序、后序
图8 前序、中序、后序遍历(7)查找给定节点双亲及孩子
图9 查找给定节点双亲及孩子(8)完全二叉树叶子节点数
图10 节点数
4.3 测试过程中遇到的主要问题及采取的解决措施