已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光明区2025年4月广东深圳市光明区住房和建设局招聘专干8人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025陕西金泰氯碱化工有限公司招聘(20人)笔试参考题库附带答案详解(3卷)
- 2025铁科院机辆所校园招聘笔试历年常考点试题专练附带答案详解
- 2025重庆数字资源集团有限公司“数智新雁”人工智能菁英招募20人笔试参考题库附带答案详解(3卷)
- 2026年软件漏洞悬赏检测合同
- 2025福建浦开集团有限公司暨福建浦盛产业发展集团有限公司招聘23人笔试参考题库附带答案详解(3卷)
- 2025甘肃白银有色集团股份有限公司技能操作人员招聘546人笔试参考题库附带答案详解(3卷)
- 未来五年铁轨建设企业制定与实施新质生产力战略分析研究报告
- 未来五年手机膜企业县域市场拓展与下沉战略分析研究报告
- 2025湖北鄂州市鄂城区国控投资集团下属子公司市场化选聘专业技术人才3人笔试参考题库附带答案详解(3卷)
- 2025内蒙古鄂尔多斯东胜区消防救援大队招聘乡镇(街道)消防安全服务中心专职工作人员招聘3人考试笔试模拟试题及答案解析
- 2025年安全总监年终总结报告
- 2026年内蒙古电子信息职业技术学院单招职业技能考试题库及答案解析(夺冠)
- 期末综合测试(试卷)-2025-2026学年六年级上学期数学人教版(含答案解析)
- 2025年国航校招笔试题目及答案
- 2025年10月自考00688设计概论试题及答案
- 六西格玛设计实例
- 2025年陕西省纪律教育知识测试题及答案
- 品质经理年终述职报告
- 2025年中小学教师职称评审教育基础知识思想政治学科知识+思想政治学科知识训练题及答案
- 2025年河北省高职单招中职高考语文试卷真题(含答案详解)
评论
0/150
提交评论