- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 2025年工业互联网区块链智能合约安全审计与合规性检查报告.docx VIP
- 部编版八年级语文上册《短文两篇》.pptx VIP
- 2024版大学生就业指导课件.ppt VIP
- 路面硬化项目图纸施工图.pdf VIP
- YS_T 582-2023《电池级碳酸锂》.pdf VIP
- DB3607_T 006-2022 设施芦笋富硒营养强化技术规程.docx VIP
- HJ 479-2009 环境空气 氮氧化物(一氧化氮和二氧化氮)的测定 盐酸萘乙二胺分光光度法.pdf VIP
- 6 别了,“不列颠尼亚”.《别了,不列颠尼亚》课件.ppt VIP
- 国际人才英语教程(中级)课后习题答案解析.pdf
- 骨质疏松健康宣教ppt(完整版).pptx VIP
文档评论(0)