ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:39.84KB ,
资源ID:18828275      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18828275.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实习报告二叉树Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实习报告二叉树Word文档下载推荐.docx

1、 3.3.1.1.2局部数据结构 . . . . . . . . . . . . . . . 4 3.3.1.4算法及程序说明. . . . . . . . . . . . . . 4 3.3.1.5接口设计. . . . . . . . . . . . . . . . . . 6 3.3.2子功能模块2 . . . . . . . . . . . . . . . . . 7 3.3.3子功能模块3 . . . . . . . . . . . . . . . . . . . 8 3.3.4子功能模块4 . . . . . . . . . . . . . . . . . . . 9 3.3.5子

2、功能模块5 . . . . . . . . . . . . . . . . . . . 103.4运行结果 . . . . . . . . . . . . . . . . . . . 123.5尚未解决的问题 . . . . . . . . . . . . . . . . . . 121.题目 二叉链表的基本操作2.要求设二叉树以二叉链表的形式保存,T为指向根结点的指针。试完成以下功能:1、建立二叉树:从键盘输入各结点的值,可参照二叉树的顺序存储方式。例如输入“a,b,c, ,d”表示结点a是根,b和c是a的两个孩子,b仅有右孩子d。2、统计T中叶结点的个数。3、统计T中度为2的结点的个数。4

3、、求树T的高度。 5、判断T中是否有度为1的结点(即按照国外教材的定义,是否为满树)。3.程序实现 3.1程序运行及编译环境程序是用Visual Studio 2008即VS9.0 编译的。可以在windows系列的操作系统上运行。 3.2程序描述该程序主要用于构造参考二叉链表的顺序存储结构。其流程如下:A).构造树控制台输入字符,依此构造二叉树的每一个节点B).输出这棵树的信息C).完成3.3实现功能Main BinTree bt; bt.CreateTree();/建树 bt.GetInfo(bt.getRoot();/获取信息,包括度为0,1,2节点数等 system(pause); r

4、eturn 0;3.3.1子功能模块1 /*函数原型:void Convert2Bin(int num,bool a,int& idx);函数功能:把一个十进制数转化为二进制数参数含义:num:要转化的十进制数;bool a:为节省空间,采用bool型来存储二进制的每一位用idx表示*/ idx)/把一个整数num转化为二进制的形式,存放在数组a里面,idx存放输出到数组的哪一项 int i=0; bool temp; while(num1) /除2取余,得到逆序的二进制序列 ai+=num%2; num/=2; ai=num; idx=i; for (int j=0;j(idx+1)/2;j

5、+)/把逆序的变为正序的 temp=aj; aj=aidx-j; aidx-j=temp;3.3.1.1数据结构的定义3.3.1.1.1全局数据结构 全局数据结构有: typedef struct BinNode/树的结点 data dat;/节点的数据域 BinNode* left;/左孩子 BinNode* right;/右孩子 int height;/树高;class BinTree BinNode* root;/树的根节点,依此表示一棵树public: BinTree(); BinNode* getRoot(); void AddNode(data Data,int idx); voi

6、d Traversal(BinNode* Root); void CreateTree(); void GetInfo(BinNode* Root);3.3.1.1.2 局部数据结构 无。3.3.1.4算法及程序说明A).本程序最重要的是用二叉链表来实现树的顺序存储: 基于此,要实现树的顺序存储,树就必须有一个存储的依据,即何为“顺序”?顺序就是按照控制台输入的顺序插入,因此,它所代表的字母的序号就是它的顺序,而这个序号决定着它唯一的存储位置。由序号到二叉链表的位置,只要把序号转化为二进制的数字序列,然后去掉最高位1,得到的二进制序列就是从根节点到该结点的路径,其中0表示左子树,1表示右子树。

7、B).算法代码如下:/*void InsertOrder(int num,bool a,int&由一个十进制数决定插入二叉树的顺序 如传入的num是9,则a=0,0,1则表示往左,左,右的顺序 idx) Convert2Bin(num,a,idx); for (int i=0;idat=Data; return; bool orderMAXSIZE;/orderMAXSIZE用来存放插入的顺序,则order=0,0,1则表示往左,左,右的顺序,count表示前多少位有效 int count=0; InsertOrder(idx,order,count);/由序号得到插入的顺序 root-hei

8、ght=count+2;/树高就是位数加1 BinNode* binNode=new BinNode;/生成一个结点 BinNode* temp=root; binNode-left=NULL;right=NULL; for (int i=0;count;i+)/按照路径插入 switch (orderi) case true: temp=temp-right; break; case false:left; default: coutright=binNode:left=binNode;/最后一步3.3.3子功能模块3void Traversal(BinNode* Root)/递归遍历 if

9、(Root) Traversal(Root-left); coutdat;right);3.3.4子功能模块4/*从控制台输入数据,然后构造一棵树附加说明:输入的字符串要以#结束,逗号分隔,如a,b,c,d#*/ void CreateTree() cout if (Root-left=NULL&right=NULL)/度为0的节点 Node0+; if (Root-left!=NULL&right=NULL)|(Root-right!=NULL)/度为1的节点 Node1+;=NULL)/度为2的节点 Node2+; if(Root=root)/后序遍历,到达根节点时,完成遍历因为这是一个参考顺序存储的数据结构,所以最后一个结点的深度就是树的高度,所以树高为root-height度为2的结点数Node2度为1的结点数Node1度为0的结点数Node0 if(Node0=0)由于度为0的结点个数为0,所以这是一颗满树!3.4运行结果图1 程序运行结果截图 生成的树是a,b,c,d,e,f,g,h,i,j,e,r3.5尚未解决的问题暂时没有发现。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1