《数据结构》课程设计 报告样本 001.docVIP

  • 5
  • 0
  • 约8.04千字
  • 约 14页
  • 2016-04-13 发布于浙江
  • 举报
《数据结构》课程设计 报告样本 001

《数据结构》课程设计报告 设计题目: 二叉树的遍历 姓 名: 陈 诗 雨 学 号: 2008k230103 专 业: 软件工程 班 级: KT923-1 指导教师: 马春江 2011年 1月 10日 目 录 一、问题描述 4 问题描述:创建二叉树并遍历 4 基本要求: 4 二、需求分析 4 三、概要设计 4 1.创建二叉树 4 2.二叉树的非递归前序遍历示意图 4 3.二叉树的后序非递归遍历示意图 5 四、数据结构设计 5 1. 二叉树结点数据类型定义为: 5 2. 二叉树数据类型定义为: 5 五、算法设计 6 1、创建二叉树 6 2、非递归前序遍历 7 3、非递归后序遍历 7 4、求二叉树的高度 8 5、 求二叉树每一层的结点数 9 6、求两节点最近共同祖先 9 6、算法流程图 10 六、程序测试与实现 11 1、函数之间的调用关系 11 2、主程序 11 3、测试数据 13 4、测试结果 13 七、调试分析 14 八、遇到的问题及解决办法 15 九、心得体会 15 一、问题描述 问题描述:创建二叉树并遍历 基本要求: 分别运用非递归的方式完成对二叉树的先序和后序遍历 输出二叉树的高度 输出每一层的结点数 查找结点P 和结点Q的最近共同祖先 二、需求分析 本程序的功能包括二叉树的建立,二叉树的递归遍历,二叉树的非递归遍历,查询二叉树的深度,查询每层的结点数,查找两个结点的最近共同祖先,二叉树的打印。 程序运行后显现提示信息,等候用户输入0—6以进入相应的操作功能。 用户输入数据完毕,程序将输出运行结果。 测试数据应为字符型数据。 三、概要设计 1.创建二叉树 输入数据不低于15个,用递归方法建立二叉树。 2.二叉树的非递归前序遍历示意图 图3.2二叉树前序遍历示意图 3.二叉树的后序非递归遍历示意图 图3.4二叉树后序遍历示意图 四、数据结构设计 二叉树结点数据类型定义为: template typename T struct BiNode { BiNodeT *rchild,*lchild;//指向左右孩子的指针 T data; //结点数据信息 }; 二叉树数据类型定义为: template typename T class BiTree { template typename T friend ostream operator (ostream os ,BiTreeT bt); public: BiTree();//无参构造函数 BiTree(int m){};//有参空构造函数 BiTree(T ary[],int num,T none);//有参构造函数 ~BiTree();//析构函数 void preorder();//递归前序遍历 void inorder();//递归中序遍历 void postorder();//递归后续遍历 void levelorder();//层序遍历 int count();//计算二叉树的结点数 int depth();//计算二叉树的深度 void display(ostream os);//打印二叉树,有层次 void LevelNum();//计算每一层结点数 void PreOrder();//非递归前序遍历 void PostOrder();//非递归后序遍历 void creat();//创建二叉树 T leastCommanAncestor(T va, T vb);//求树中任意两结点最近共同祖先 protected: //以下函数供上面函数调用 //对应相同功能 void creat(BiNode T* root);//创建 void release(BiNodeT* root);//删除 BiNodeT * Build(T ary[],int num,T none,int idx);//用数组创建二叉树 void PreOrder(BiNodeT* root);//前序遍历 void PostOrder(BiNodeT* root);//后续遍历 void LevelNum(BiNodeT* root);//层序遍历 void preorder(BiNodeT* root);//递归前序遍历 void inorder(BiNodeT* root);//递归中序遍历 void postorder(BiNodeT* root);//递归后续遍历 void levelorder(BiN

文档评论(0)

1亿VIP精品文档

相关文档