




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6数据结构实验报告 姓名:王晓彬 学号:1301100211 班级:信计1002 时间:2012.04.30 实验四 二叉树的创建与遍历实验目的:通过上机实验进一步掌握栈、队列、二叉树的存储结构及基本操作的实现方法。实验内容与要求:基于二叉链表存储结构实现二叉树的基本运算,要求: 能建立非空二叉树; 实现二叉树的先、中、后序递归遍历算法; 实现二叉树的非递归的先(或中、或后)序遍历算法及层序遍历算法; 记录运行结果并对递归算法和非递归算法的效率加以分析。程序设计: 注释: /创建者:王晓彬 /班级:信计1002 /学号:1301100211 /创建时间:2012.04.30 /最后修改时间:2012.05.05程序设计:#include #includetypedef int datatype;typedef struct node datatype data; struct node *lchild,*rchild;bitree,*bitrees;typedef struct queuenode /定义队列结点结构 bitrees ch; struct queuenode *next;queuenode,*queueptr; typedef struct /定义队列指针 queueptr front; queueptr rear;linkqueue; struct node* bulitbitree() /前序法创建二叉树bitree *T;int a;scanf(%d,&a);if(a=0)T=NULL;elseT=(bitree*)malloc(sizeof(bitree);T-data=a;T-lchild=bulitbitree();T-rchild=bulitbitree();return (T);void PreOrderTraverse(bitree *T) /递归前序 if(T) printf(%dt,T-data); PreOrderTraverse(T-lchild); PreOrderTraverse(T-rchild); void InOrderTraverse(bitree *T) /递归中序 if(T) InOrderTraverse(T-lchild); printf(%dt,T-data); InOrderTraverse(T-rchild); void PostOrderTraverse(bitree *T) /递归后序 if(T) PostOrderTraverse(T-lchild); PostOrderTraverse(T-rchild); printf(%dt,T-data); void InOrder(bitree* T) /非递归前序bitree *stack99,*p; int top=-1; if(T!=NULL) top+; stacktop=T; /根节点入栈while(top-1) p=stacktop; /出栈 top-; printf(%dt,p-data); if(p-rchild!=NULL) top+; stacktop=p-rchild; if(p-lchild!=NULL) top+; stacktop=p-lchild; void initqueue(linkqueue &q) /初始化一个带头结点的队列 q.front=q.rear=(queueptr)malloc(sizeof(queuenode); q.front-next=NULL;void enqueue(linkqueue &q,bitrees p) /入队列 queueptr s; int first=1; s=(queueptr)malloc(sizeof(queuenode); s-ch=p; s-next=NULL; q.rear-next=s; q.rear=s;void dequeue(linkqueue &q,bitrees &p) /出队列 int data; queueptr s; s=q.front-next; p=s-ch; data=p-data; q.front-next=s-next; if(q.rear=s) q.rear=q.front; free(s); printf(%dt,data);int queueempty(linkqueue q) /判断队列是否为空 if(q.front-next=NULL) return 1; return 0;void traverse(bitrees bt) /按层次遍历树中结点 linkqueue q; bitrees p; initqueue(q); p=bt; enqueue(q,p); while(queueempty(q)!=1) dequeue(q,p); if(p-lchild!=NULL) enqueue(q,p-lchild); if(p-rchild!=NULL) enqueue(q,p-rchild); void main() /主程序 bitree *T;printf(输入二叉树(以0为空节点标志):n); T=bulitbitree();printf(递归法输出:n);printf(t先序遍历为:n);PreOrderTraverse(T);printf(n);printf(t中序遍历为:n);InOrderTraverse(T);printf(n);printf(t后序遍历为:n);PostOrderTraverse(T);printf(n);printf(非递归先序遍历为:n);InOrder(T);printf(n);printf(层次遍历为:n);traverse(T);printf(n);运行结果:效率分析:1.递归算法的优点(1)问题的数学模型或算法设计方法本身就是递归的,采用递归算法来描述它们非常自然;(2)描述直观,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摇控行车工安全知识培训课件
- 陕西省汉中市2024-2025学年八年级下学期期末语文试题
- 小麦生产技术试题及答案
- 2025医疗机构整体转让协议
- 2025湖南省预拌混凝土购销合同范本(试用)
- 2025标准版借款合同模板
- 公司造价知识培训课件
- 搜集与处理文字课件
- 2025餐饮服务合作合同范本
- 当代中学教师岗位初中语文专题面试试题
- 2025年医院血透室试题(含答案)
- 2025年小学语文教师考试题库含答案
- 船舶安全教育培训内容
- 目标管理Smart原则培训课件
- 危险化学品培训教材PPT
- 叠片机说明书
- 磷酸钠安全周知卡、职业危害告知卡、理化特性表
- 知名投资机构和投资人联系方式汇总
- 循环流化床锅炉设备及系统课件
- (完整word版)教育部发布《3-6岁儿童学习与发展指南》(全文)
- 施工组织方案(高压旋喷桩内插h型钢)新0319教学文案
评论
0/150
提交评论