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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

DS5树型结构.docx

1、DS5树型结构数据结构与算法分析课 程 实 验 报 告 项目名称:树结构的操作学生姓名:学生学号:指导教师:完成日期:2014125【实验目的】1. 理解树形结构的逻辑和存储特点。 2. 掌握二叉树的遍历递归算法。【实验内容】1. 用递归算法实现二叉树的建立,并能输出遍历序列结果(先序、中序、后序任意一种即可) 2. 完成二叉树的应用:统计叶子结点数目,输出叶子结点,求二叉树深度,交换每个结点的左右子树,统计树的结点总个数。(任选其中两个)【实验方式】个人实验。【实验设备与环境】 PC机,Windows XP操作系统,VC+6.0开发环境。【数据结构及函数定义】 (1)主函数main() 实现

2、初始化操作,完成对子函数的调用 (2)子函数BiTree *CreateBiTree(BiTree *T) 创建二叉树 Status DepthBiTree (BiTree *T)求深度Status countleaf(BiTree *T) 计算叶子结点个数 void preorder(BiTree *T)先序遍历void Inorder(BiTree *T) 中序遍历 void Postorder (BiTree *T) 后序遍历void change_left_right(BiTree *T)交换左右孩子【测试数据与实验结果】输入先序序列的数据:ABC#DE#G#F# 【源程序清单】#in

3、clude stdio.h #include stdlib.h #include string.h #define null 0 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; #define STACKINCREMENT 10 typedef int Status; typedef int TElemType; typedef struct BiTNode char data; struct BiT

4、Node *lchild; struct BiTNode *rchild; BiTree; /-创建二叉树 BiTree *CreateBiTree(BiTree *T) char ch; if(ch=getchar()=#) T=NULL; else T=(BiTree *)malloc(sizeof(BiTNode ); T-data=ch; T-lchild = CreateBiTree(T-lchild); T-rchild = CreateBiTree(T-rchild); return T; /-查找结点 /*Status searchBiTree(BiTree *T,TElemT

5、ype x) BiTree *bt; if(T!=NULL) if(bt-data=x) printf(你查找的叶子结点存在于二叉树中); return OK; searchBiTree(T-lchild,x); searchBiTree(T-rchild,x); else printf(%d不在该树种,x); return NULL; */ /-求深度 Status DepthBiTree (BiTree *T) int depthval,depthLeft,depthRight; if ( !T ) depthval = 0; else depthLeft = DepthBiTree( T

6、-lchild ); depthRight= DepthBiTree( T-rchild ); depthval = 1 + (depthLeft depthRight?depthLeft : depthRight); return depthval; /-计算叶子结点个数 Status countleaf(BiTree *T) int num1; int num2; int num; if (T=NULL) num=0; else if(T-lchild=NULL)&(T-rchild=NULL) num=1; else num1=countleaf (T-lchild); num2= co

7、untleaf(T-rchild); num= num1+num2; return num; / 先序遍历二叉树 void preorder(BiTree *T) if(T!=NULL) printf(%2c,T-data); preorder(T-lchild); preorder(T-rchild); / 中序遍历二叉树 void Inorder(BiTree *T) struct BiTNode *p; struct BiTNode *stack20; int top=0; p=T; while(p|top!=0) while (p) stacktop+=p; p=p-lchild ;

8、p=stack-top; printf(%c ,p-data ); p=p-rchild ; / 后序遍历二叉树 void Postorder (BiTree *T) if (T!=NULL) Postorder(T-lchild); Postorder(T-rchild); printf(%2c,T-data); /-交换左右孩子 void change_left_right(BiTree *T) BiTree *temp; if (T) change_left_right(T-lchild); change_left_right(T-rchild); temp=T-lchild; T-lc

9、hild =T-rchild; T-rchild=temp; int main() int i,j; BiTree *bt; printf(请用先序序列输入数据:n); bt= NULL; bt = CreateBiTree(bt); /and here printf(先序遍历的结果:); preorder(bt); printf(nn); printf(中序遍历的结果:); Inorder(bt); printf(nn); printf(后序遍历的结果:); Postorder(bt); printf(nn); printf(叶子结点的总个数:n=); i = countleaf(bt);

10、printf(%d,i); printf(nn); printf(该二叉树的深度: h=); j = DepthBiTree (bt); printf(%d,j); printf(nn); printf(交换左右孩子的结果如下:); change_left_right(bt); printf(先序遍历的结果:); preorder(bt); printf(nn); printf(中序遍历的结果:); Inorder(bt); printf(nn); printf(后序遍历的结果:); Postorder(bt); printf(nn); printf(叶子结点的总个数: n=); i = countleaf(bt); printf(%d,i); printf(nn); printf(该二叉树的深度: h=); j = DepthBiTree (bt); printf(%d,j); printf(nn); return 0;

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

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