实验五二叉树基本操作的编程实现实验报告.doc

实验五二叉树基本操作的编程实现实验报告.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY 数据结构 实 验 报 告 实验项目 实验五 实验类别 基础篇 学生姓名 朱忠栋 学生学号 20120231515 完成日期 2014-12-16 指导教师 付勇智 实验成绩 评阅日期 评阅教师 实验五 二叉树基本操作的编程实现 【实验目的】 内容:二叉树基本操作的编程实现 要求: 二叉树基本操作的编程实现(2学时,验证型),掌握二叉树的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找等操作,存储结构主要采用顺序或链接结构。也鼓励学生利用基本操作进行一些应用的程序设计。 【实验性质】 验证性实验(学时数:2H) 【实验内容】 以下的选题都可以作为本次实验的推荐题目 建立二叉树,并以前序遍历的方式将结点内容输出。 将一个表示二叉树的数组结构转换成链表结构。 将表达式二叉树方式存入数组,以递归方式建立表达式之二叉树状结构,再分别输出前序、中序及后序遍历结果,并计算出表达式之结果。 【注意事项】 1.开发语言:使用C。 2.可以自己增加其他功能。 【实验分析、说明过程】 页面不够,可续页。 根据自己选择的层次不同的实验内容,完善程序代码,调试通过后,分析说明该问题处理的详细算法过程。不需要写出详细的代码,只表达清楚详细的处理算法即可。可以采用流程图、形式语言或者其他数学表达方式来说明。 这次实验考查的主要是:递归建立二叉树,递归输出先序,中序和后序遍历的结果;非递归建立二叉树,再以非递归方式分别输出先序,中序和后序遍历的结果。 而对于基础篇考查的主要是:递归建立二叉树,递归输出先序,中序和后序遍历的结果,是以填空的方式进行考查的。 对于第一空:递归实现的先序遍历,其实现方法是: printf(%d,p-data); if(p-lchild!=NULL) preorder(p-lchild); if(p-rchild!=NULL) preorder(p-rchild); 对于第二空:递归实现的中序遍历,其实现方法是: if(p-lchild!=NULL) inorder(p-lchild); printf(%d,p-data); if(p-rchild!=NULL) inorder(p-rchild); 对于第三空:递归实现的后序遍历,其实现方法是: if(p-lchild!=NULL) postorder(p-lchild); if(p-rchild!=NULL) postorder(p-rchild); printf(%d,p-data); 【思考问题】 页面不够,可续页。 二叉树是树吗?它的定义为什么是递归的? 答:最多有两棵子树的有序树,称为二叉树。二叉树是一种特殊的树大体思路差不多,但节点访问位置不一样, 先序的话,是先访问,然后节点压栈,移到左子树,至节点空退栈,移到右子树。 而中序的话,是先节点压栈,移到左子树,至节点空退栈,访问节点,然后移到右子树另外,所谓前序、中序、后序遍历,全称是前根序遍历,中根序遍历,后根序遍历,不管哪种遍历,访问左子树 一定在 访问右子树之前,不同的就是根的访问时机。所以三种递归/或非递归,程序思路都是一样的。一个集合的幂集排列问题组合问题在本次实验中我遇到了许多困难终于我顺利地完成了它本次实验我收获良多不仅仅是书本上的#includestdio.h #includestdlib.h #includeconio.h #includeiostream.h #define MAXSIZE 100 typedef char elemtype; typedef struct bitree { elemtype data; struct bitree *lchild,*rchild; }BTREE; BTREE *create() {//先序递归创建二叉树 char ch; BTREE *bt; ch=getchar(); if(ch==#) bt=NULL; else { bt=(BTREE *)malloc(sizeof(BTREE)); bt-data=ch; bt-lchild=create(); //递归创建左子树 bt-rchild=

文档评论(0)

wuailuo + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档