- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验题目:实验九——二叉树实验
算法设计(3)
问题分析:
1、题目要求:编写算法交换二叉树中所有结点的左右子树
2、设计思路:首先定义一个二叉树的数据类型,使用先序遍历建立该二叉树,遍历二叉树,设计左右子树交换的函数,再次遍历交换之后的二叉树,与先前二叉树进行比较。遍历算法与交换算法使用递归设计更加简洁。
3、测试数据:
A、输入:1 2 4 0 0 5 0 0 3 0 0
交换前中序遍历:4 2 5 1 3
交换后中序遍历:3 1 5 2 4
1325
1
3
2
5
4
1
1
2
3
4
5
B、输入:3 7 11 0 0 18 17 0 0 19 0 0 6 13 0 0 16 0 0
交换前中序遍历:11 7 17 18 19 3 13 6 16
交换后中序遍历:16 6 13 3 19 18 17 7 11
交换前: 交换后:
166
16
6
11
7
18
3
13
19
17
11
7
16
6
13
3
19
18
17
概要设计:
1、为了实现上述功能:①构造一个空的二叉树;②应用先序遍历输入,建立二叉树;③中序遍历二叉树;④调用左右子树交换函数;⑤中序遍历交换过后的二叉树。
2、本程序包括4个函数:
① 主函数main()
② 先序遍历二叉树建立函数creat_bt()
③ 中序遍历二叉树函数inorder()
④ 左右子树交换函数 exchange()
各函数间关系如下:
main()
main()
creat_bt()
inorder()
exchange()
详细设计:
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(%d,x);
if(x==0) t=NULL; //0表示空结点
else
{
t=(bitree)malloc(sizeof(binode));
t-data=x;
t-lchild=creat_bt(); //递归
t-rchild=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-lchild); //递归
exchange(t-rchild);
}
}
void inorder(bitree bt) //递归的中序遍历
{
if(bt)
{
inorder(bt-lchild);
printf(%d ,bt-data);
inorder(bt-rchild);
}
}
void main()
{
bitree root;
printf(先序遍历建立二叉树,输入元素(0表示空):\n);
root=creat_bt();
printf(交换前的中序序列
您可能关注的文档
- 第四章内压薄壁圆筒与封头的强度设计.ppt
- 第五讲 颈肩及上肢疼痛.ppt
- 第五节 猩红热.ppt
- 第五课时尊重他人.ppt
- 第五章 贝氏体相变.ppt
- 第五章 采场顶板支护方法.docx
- 第五章 固溶体.ppt
- 第五章 化纤工艺与装备.ppt
- 第五章 矿物质和水.ppt
- 第五章 日本的產業.ppt
- 教学资源配置优化:学习分析技术视角下的基础教育实践研究教学研究课题报告.docx
- 陕西省西安市第七十中学2016届九年级物理10月月考试题苏科版.docx
- 小学英语教学在智慧校园智能学习环境下的多模态资源整合策略教学研究课题报告.docx
- 小学音乐课堂校园植物主题歌曲的演唱与情感表达教学研究课题报告.docx
- 基于云平台的家校共育模式创新:以某中学为例教学研究课题报告.docx
- 历史人物评价在高中历史教学中的课程资源开发与应用教学研究课题报告.docx
- 《智能家居语音交互在智能办公环境中的应用与优化》教学研究课题报告.docx
- 高中体育课堂中乒乓球技能训练方法与效果分析教学研究课题报告.docx
- 小学科学数字教育资源设计与跨文化适应能力培养教学研究课题报告.docx
- 人工智能背景下小学语文、科学跨学科教学与批判性思维培养的实践探索教学研究课题报告.docx
文档评论(0)