- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)