- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 二叉树基本运算以及遍历
实验三 二叉树基本运算以及遍历
一 实验目的:
了解树的逻辑和存储特点,掌握二叉树的建立,以及前中后序遍历的理论思想和运算方法。
二 实验内容:
建立一棵二叉树,添加树中结点的元素,对该二叉树进行前、中、后序遍历,并打印遍历结果
三 实验原理:
二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。
二叉树是有序的,即若将其左、右子树颠倒,就成为另一棵不同的二叉树。即使树中结点只有一棵子树,也要区分它是左子树还是右子树。
二叉树
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示着元素的逻辑关系。通常有下面两种形式。
二叉链表存储
链表中每个结点由三个域组成,除了数据域外,还有两个指针域,分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。结点的存储的结构为:
结点示意图
其中,data域存放某结点的数据信息;lchild与rchild分别存放指向左孩子和右孩子的指针,当左孩子或右孩子不存在时,相应指针域值为空。
二叉树的建立:
1 建立根结点。
2 若左子树不空则建左子树。
3 若右子树不空则建右子树。
二叉树的前序遍历
1 访问根结点;
2 先序遍历根结点的左子树;
3 先序遍历根结点的右子树。
二叉树的中序遍历
1 中序遍历根结点的左子树;
2 访问根结点;
3 中序遍历根结点的右子树。
二叉树的后序遍历
1后序遍历根结点的左子树;
2后序遍历根结点的右子树。
3访问根结点;
四 实验步骤
1 进入Turbo C2.0,新建一个文件。
2 输入程序,程序要求使用子函数进行组织。
3 将源程序保存到指定文件夹“D:\学生姓名”。
4 按F9调试,纠正语法错误。
5按Ctrl+F9运行,调试逻辑错误。
6 按Alt+F5查看结果。
五、实验中应注意的问题与思考题:
1 如果需要对树中的数据进行查询修改,应该如何实现?
先找到需要修改的数据的位置,再让对其赋值。
2对各个功能模块采用独立编制子函数,增强程序的可执行性、可移植性和可读性。增加情报信息量,对实际应用中可能发生的情况考虑周全,对非法情形要提出适当的处理方案。
3 深入了解树的逻辑结构,重点掌握递归方法的原理和实现,在确定递归终点条件的时候应特别小心,避免产生死循环。对树的遍历或处理应该采用递归的方法,尽量不使用非递归算法。
六、源代码
#include stdio.h
#include stdlib.h
struct btnode
{
int d;
struct btnode *lchild;
struct btnode *rchild;
};
struct btnode *creatbt(bt,k) /*******二叉树的生成********/
struct btnode *bt;
int k;
{
int b;
struct btnode *p,*t;
printf(请输入b: );
scanf(%d,b);
if(b!=0)
{
p=(struct btnode *)malloc (sizeof(struct btnode));
p-d=b;p-lchild=NULL;p-rchild=NULL;
if(k==0) t=p;
if(k==1) bt-lchild=p;
if(k==2) bt-rchild=p;
creatbt(p,1);
creatbt(p,2);
}
return(t);
}
pretrav(bt) /********二叉树的前序遍历*****/
struct btnode *bt;
{
if(bt!=NULL)
{
printf(%d ,bt-d);
pretrav(bt-lchild);
pretrav(bt-rchild);
}
return;
}
intrav(bt) /******二叉树的中序遍历*********/
struct btnode *bt;
{
if(bt!=NULL)
{
intrav(bt-lchild);
printf(%d ,bt-d);
intrav(bt-rchild);
}
return;
}
postrav(bt) /*******二叉树的后序遍历*********/
struct btnode *bt;
{
if(bt!=NULL)
{
postrav(bt-lchild);
postrav(bt-rchild)
您可能关注的文档
最近下载
- 2024-2025学年初中信息技术(信息科技)七年级上册北师大版(2024)教学设计合集.docx
- 高中政治2024届高考热点问题分类讲解与练习(低空经济).pdf VIP
- 走向辉煌2011高考语文阅读飞跃与写作创新.pdf VIP
- 专题04 低空经济-2025年高考政治时政热点押题预测(全国通用)(原卷版).docx VIP
- 专题十五 低空经济 数字经济 -2024年高考政治时政专题必刷卷(解析版).docx VIP
- 投标答辩述标PPT.pptx VIP
- 2025年机动车检测站检测员理论培训测试试卷含答案.docx VIP
- 科研伦理与学术规范(北京师范)中国大学MOOC慕课 客观题答案.pdf VIP
- 网课超星学习通英美文学及选读尔雅答案.docx VIP
- 低空经济-经济科技2025年高考政治时事热点解读(附答案解析).docx VIP
文档评论(0)