- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE / NUMPAGES
实验报告
课程名称:数据结构实验
实验:二叉树的建立、遍历及常见二叉树运算
时间:2018/10/28
地点:理工楼1#208 应用数学实验室
学号:105022009022
姓名:陈锦亮
班级:计算机科学与技术师范类)5班
一、实验目的
1. 掌握二叉树的存储实现
2. 掌握二叉树的遍历思想
3. 掌握二叉树的常见算法的程序实现
二、实验内容
输入字符序列,建立二叉树的二叉链表结构,并用广义表形式输出该二叉树。采用先序序列)
实现二叉树的先序、中序、后序的递归遍历算法。
实现二叉树的先序、中序、后序的非递归遍历算法。
求二叉树的高度。
求二叉树的结点个数。
打印二叉树的所有叶子结点。
7.打印二叉树的所有非叶子结点。
实验要求:
分别编写实现上述算法的子函数,并编写一个主函数,在主函数中设计一个简单的菜单,分别调用上述子函数。
三、实验环境
VC++6.0
四、实验步骤和结果
#includestdio.h
#includemalloc.h
#includestring.h
#includestack
usingnamespace std。
typedefenum PointerTag {Link,Thread}。
typedefstruct BNode
{
char data。
struct BNode *Lchild,*Rchild。
int deepth。
PointerTag LTag,RTag。
}BNode,*BTree。
int CreateBTree_DLR(BTree T,int deepth,int *deep//创建一颗二叉树,先序
{
char ch。
ch=getchar(。
if(ch==#
{
T=NULL。
}
else
{
T=(BNode *malloc(sizeof(BTree。
T-data =ch。
T-deepth =++deepth。
if(*deepdeepth *deep=deepth。 // 遍历过程记录树的高度
CreateBTree_DLR(T-Lchild,deepth,deep。
CreateBTree_DLR(T-Rchild,deepth,deep。
}
return *deep。
}
void OrderTraverse_DLR(BTree T//先序遍历二叉树,递归
{
if(T!=NULL
{
if(T-data!=# printf(%c ,T-data。
if(T-Lchild
OrderTraverse_DLR(T-Lchild。
if(T-Rchild
OrderTraverse_DLR(T-Rchild。
}
}
void OrderTraverse_LDR(BTree T//中序遍历二叉树,递归
{
if(T!=NULL{
if(T-Lchild
OrderTraverse_LDR(T-Lchild。
if(T-data!=# printf(%c ,T-data。
if(T-Rchild
OrderTraverse_LDR(T-Rchild。
}
}
void OrderTraverse_LRD(BTree T//后序遍历二叉树,递归
{
if(T!=NULL{
if(T-Lchild
OrderTraverse_LRD(T-Lchild。
if(T-Rchild
OrderTraverse_LRD(T-Rchild。
if(T-data!=# printf(%c ,T-data。
}
}
void Pre(BTree root//先序非递归
{
stackBTree S。
BTree p。
p=root。
while (p||!S.empty(
{
while (p //遍历左子树
{
printf(%c ,p-data。
S.push(p。
p=p-Lchild。
}
if (!S.empty( //通过下一次循环中的内嵌while实现右子树遍历
{
p=S.top(。
S.pop(。
p=p-Rchild。
}
}
}
void Mid(BTree root//中序非递归
{
BTree p。
stackBTree S。
S.push(root。
while(!S.empty(
{
while((p=S.top(p
S.push(p-Lchild。
S.pop(。
if(!S.empty(
{
p=S.top(。
printf(%c ,p-data。
S.pop(。
S.push(p-R
您可能关注的文档
最近下载
- 2025年江苏省公务员省考《行测》联考-部分真题(A类).pdf VIP
- 校园消防安全台账范本.docx
- 2024版加油站安全生产管理台账样本.doc VIP
- 精品解析:江苏省南京市玄武外国语学校、科利华中学2022-2023学年八年级下学期期中语文试题(解析版).docx VIP
- PC工法桩专项施工方案 .doc
- foreign language classroom anxiety.pdf VIP
- JT_T 410-2022CN交通运输行政执法标识.pdf
- 标准图集-22TJ310装配式钢筋桁架楼承板系列产品-下册.pdf VIP
- 汽车基础知识在线试题答案2.pdf VIP
- 地质勘查坑探规范.pdf VIP
文档评论(0)