二叉树实验报告.docxVIP

  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文档。上传文档
查看更多
B,输入: B,输入: 实验题目:实验九一一二义树实验 算法设计⑶ 问题分析: 1、 题目要求:编写算法交换二叉树中所有结点的左右子树 2、 设计思路:首先定义一个二义树的数据类型,使用先序遍历建立该二又 树,遍历二义树,设计左右子树交换的函数,再次遍历交换之后的二又树,与先 前二又树进行比较。遍历算法与交换算法使用递归设计更加简洁。 3、 测试数据: A、输入:12400500300 交换前中序遍历:425 1 3 交换后中序遍历:3152417 00 19 0061300 16 00 交换前中序遍历:II 7 17 18 193 136 16 交换后中序遍历:166 133 19 18 177 11 概要设计: 1、 为了实现上述功能:①构造一个空的二义树;②应用先序遍历输入,建 立二又树;③中序遍历二又树;④调用左右子树交换函数:⑤中序遍历交换过后 的二又树。 2、 本程序包括4个函数: 主函数main () 先序遍历二又树建立函数creaOt () 中序遍历二又树函数inorder () 左右子树交换函数exchange () 各函数间关系如下: creat bt () main () main () 详细设计: 1、 结点类型 typedef struct binode //定义二叉树 ( int data: //数据域 struct binode *lchild, *rchild; //左孩子、右孩子 }binode, *bitree; 2、 各函数操作 先序遍历建二义树函数 bitree creat.bt() ( 输入结点数据; 判断是否为0{ 若是,为空; 不是,递归;) 返回二叉树; } 左右子树交换函数 void exchange(bitree t) ( 判断结点是否为空{ 否,交换左右子树; 递归;} } 中序遍历函数 void inorder(bitree bt) { 判断是否为空{ 递归左子树: 输岀; 递归右子树:} 源代码: #includestdio. h #includemalloc. h typedef struct binode //定义二义树 ( int data: //数据域 struct binode *lchild, *rchild; 〃左孩了、右孩了 }binode, *bitree; bitree creat_bt () 〃按先序遍历建二叉树 ( bitree t; int x; scanf x); i f (x=0) t=NULL: 〃0 表示空结点 else { t=(bitree)malloc(sizeof(b inode)); t-data=x; t-lchi ld=creat_bt (); 〃递归 t-rchi ld=creat_bt (); ) return t; } void exchange (bitree t) 〃左、右子树交换 ( bitree p; if(t!=NULL) 〃不是空树 { p二t-lchild; t-lchild=t-rchild; t-rchild=p; 〃左右交换 exchange (t- 1 chi Id); /7递归 exchange(t-rchiId): void inorder (bitree bt) 〃递归的中序遍历 if(bt) inorder(bt-lchiId); printf(%d “, bt-data); inorder(bt-rchiId): void main() bitree root: printf C先序遍历建立二叉树,输入元素(0表示空):\n); root=creat_bt(); printf(”交换前的中序序列是:”); inorder(root); exchange(root); printf (*\n交换后的中序序列是:勺; inorder(root); printf (w\nz,); } 测试结果: ? E;\vc ,实验九二叉树\*bug\右子唳揉e* 先序遍历建立二素<0表不空): 12400500300 -4 2 5 1 3 j 3 1 5 2 4 cont inue洲謳疆 -4 2 5 1 3 j 3 1 5 2 4 cont inue Press any Key to -■ E:\vc洞睥0验兀二叉称Debug\S右子呢交实.we - 先序遍历建立二叉树,输入元素(。表示空): 5 11 7 17 IS 19 3 13 6 16是:16 6 13 3 19 IS 17 7 113_? 11 0 0 18 17 0 0 19 0 0 6 13 0 0 16 0 0 5 11 7 17 IS 19 3 13 6 16 是:16 6 13 3 19 IS 17 7 1

文档评论(0)

150****6040 + 关注
实名认证
文档贡献者

互联网产品运营推广以及k12教育内容。

1亿VIP精品文档

相关文档