遍历二叉树重点分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机实验报告 学 院: 计算机与信息技术学院 专 业: 计算机科学与技术(师范) 课程名称: 数据结构 实验题目: 二叉树的遍历输出及相关操作 班级序号: 师范1班 学 号: 201421012731 学生姓名: 邓雪 指导教师: 杨红颖 完成时间: 2015年12月25号 实验目的: 综合应用所学的知识分析问题、解决问题,学会用建立二叉树并对其进行遍历,更好的了解二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现流程及操作步骤。加深理论知识,提高实际编程能力及程序调试能力。 实验环境: Windows 8.1 Microsoft Visual c++ 6.0 实验内容及要求: 要建立一个二叉链表,需按照完全二叉树的层次顺序,依次输入结点信息建立二叉链表。对于一般的二叉树,必须添加一些虚结点,使其成为完全二叉树。用@表示虚结点,#表示输入结束标志。建立后对其进行前序、中序、后序遍历输出。并求出二叉树的高度和叶子结点。 四、概要设计: 1.创建二叉树,定义二叉树结点值的类型为字符型。 2.按层次输入,用@表示虚结点,#表示输入结束标志。 3.按前序、中序、后序遍历输出。 4.求出二叉树高度和叶子结点。 测验数据: A B C D E F G H 前序遍历二叉树: 1)访问根节点 2)前序遍历左子树 3)前序遍历右子树 中序遍历二叉树: 1)中序遍历左子树 2)访问根结点 3)中序遍历右子树 后序遍历二叉树 1)后序遍历左子树 2)后序遍历右子树 3)访问根结点 五、代码: #includestdio.h #include stdlib.h #define maxsize 1024 typedef int datatype; //定义结构体 typedef struct node { datatype data; struct node *lchild,*rchild; }bitree; //二叉树的生成 bitree *Q[maxsize]; bitree *CREATREE() { bitree *root,*s; char ch; int front,rear; root=NULL; front=1,rear=0; ch=getchar(); while(ch!=#) { s=NULL; if(ch!=@) { s=(bitree *)malloc(sizeof(bitree)); s-data=ch; s-lchild=NULL; s-rchild=NULL; } rear++; Q[rear]=s; if(rear==1) root=s; else { if(sQ[front]) if(rear%2==0) Q[front]-lchild=s; else Q[front]-rchild=s; if(rear%2==1) front++; } ch=getchar(); } return root; } //前序遍历 void PREORDER(bitree *t) { if(t) { printf(\t%c,t-data); PREORDER(t-lchild); PREORDER(t-rchild); } } //中序遍历 void INORDER(bitree *t) { if(t) { INORDER(t-lchild); printf(\t%c,t-data); INORDER(t-rchild); } } //后序遍历 void POSTORDER(bitree *t) { if(t) { POSTORDER(t-lchild); POSTORDER(t-rchild); printf(\t%c,t-data); } } /

文档评论(0)

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

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

1亿VIP精品文档

相关文档