完全二叉树操作演示.docVIP

  • 22
  • 0
  • 约8.58千字
  • 约 15页
  • 2020-10-02 发布于浙江
  • 举报
PAGE PAGE 13 安徽省巢湖学院计算机与信息工程学院 课程设计报告 课程名称 《数据结构》 课题名称 完全二叉树操作演示 专业班级 计算机科学与技术专升本1班 学 号 14011040 姓 名 李鹏 王帅 李泳波 联系方式 指导教师 严小燕 完成日期: 2014年 12月 27 日 目 录 TOC \o 1-3 \h \z \u 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) //层次遍历 Sear

文档评论(0)

1亿VIP精品文档

相关文档