9陈锦亮实验五.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

phl805 + 关注
实名认证
文档贡献者

建筑从业资格证持证人

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

领域认证该用户于2023年05月12日上传了建筑从业资格证

1亿VIP精品文档

相关文档