数据结构课程设计---判别给定的二叉树是否为二叉排序树.docVIP

数据结构课程设计---判别给定的二叉树是否为二叉排序树.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计任务书 学 院 专 业 学 生 姓 名 学 号 题 目 判别给定的二叉树是否为二叉排序树 内容及要求: 设计内容: 判别给定的二叉树是否为二叉排序树,设此二叉树以二叉链表存储,且树中结点的关键字均不相同。为实现上述功能,需要解决的关键问题是:建立一棵二叉树及判定二叉树过程。 要求: 1.设计数据结构: ①建立的是二叉树,所以逻辑结构为树形结构。 ②定义存储结构为链式存储结构,用typedef定义结点的结构体。 2.在Turboc或兼容环境完成上述题目的代码编写与调试; 3.程序运行界面交互性好;输入输出数据时,应该有相应的提示。 4.给出两组测试数据,可以按路径覆盖的方法给出两组主要的测试数据。 任务交付: 1. 课程设计论文,包括需求分析、概要设计、详细设计、调试分析、课程总结、 参考文献等部分。 2. 课程设计论电子文档及程序源代码。 进度安排: 本课程设计时间为17、18教学周。其中包含设计、代码调试、课程设计论文撰写、验收与答辩几个阶段。 第1周 查找资料、完成初步设计、代码设计与初步调试; 第2周 调试、测试、验收、课程设计论文撰写、答辩。 指导教师(签字): 2011年 12月16日 学院院长(签字): 2011年12月16日 目录 1 需求分析 3 2 概要设计 4 2.1存储结构设计说明 4 2.2程序功能图 4 2.3算法流程图 5 3 详细设计 7 3.1程序分析 7 3.2程序源代码 7 4 调试分析 9 5 课程总结 11 6参考文献 12 1 需求分析 图1-1 二叉树 以图1-1所示的二叉树为例设计,建立一个以二叉链表方式存储的二叉树,输入结点信息时按照完全二叉树的结点顺序输入(1为虚结点,0为输入结束)。由于一棵二叉排序树中序遍历后的序列是递增有序的,因此可利用中序遍历一棵二叉树后的序列是否递增有序来判断是否为二叉排序树。 如图,二叉树的结点输入顺序为77 80 90 50 1 68 88 1 1 34 56 0 (1为虚结点,0为输入结束),中序遍历之后的顺序为50 80 77 34 68 56 90 88 ,由于中序遍历之后的序列不是递增有序的,因此可判断出此二叉树不是二叉排序树。 2 概要设计typedef struct node{ int data; //数据域 node *lchild,*rchild; //左孩子指针,右孩子指针 }Bitree; //结点的结构体定义 2.2程序功能图 图2-1 程序功能图 2.3算法流程图 选取部分核心流程图如下: 图2-2 主要流程图 图2-3 建立二叉树 3 详细设计 3.1程序分析 建立一个以二叉链表方式存储的二叉树,建立二叉树时,按照完全二叉树的结点顺序输入,1表示虚结点,0表示输入结束。若不是虚结点时,则建立一个新结点,并且将其作为左孩子或右孩子结点连接到它的父结点上(第一个结点无父结点);若是虚结点,则将空结点(NULL)作为左孩子或右孩子结点连接到它的父节点上。 判定二叉树时,中序遍历整棵二叉树,访问根结点时将根结点信息存入一个数组中,以用来比较中序遍历后序列是否为空。比较数组元素时,从下标为0的数组元素开始比较,先将下标为i=0的a[i]与下标为1的a[i+1]比较,如果a[i]a[i+1],则结束比较,即该二叉树不是二叉排序树,否则继续比较,直至比较完整个数组元素。 3.2程序源代码 #include stdafx.h //编写的任何.cpp文件都必须首先包含stdafx.h #includestdio.h #includestdlib.h #define max 10 typedef struct node{ int data; //数据域 node *lchild,*rchild; //左孩子指针,右孩子指针 }Bitree; //结点的结构体定义 Bitree *B[max]; int temp=0; int Btree[max]; Bitree *Creatree(){ //建立二叉树 Bitree *T,*S; int ch; int front,rear,sign; sign=0; //结点的序号从0开始编号(按照完全二叉树的顺序标记) front=0; //双亲结点下标初值 rear=-1; //自身结点下标初值 T=NULL; //初始化树T

文档评论(0)

sanshengyuan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档