- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验树与叉树的操作实验指导
实验六 树与二叉树
6.1实验目的:
掌握二叉树链表的结构和二叉树的建立过程;
掌握二叉树的基本操作,加深对二叉树的理解,逐步培养解决实际问题的编程能力。
6.2实验要求:
复习课本中有关树与二叉树的知识;
用C语言完成算法和程序设计并上机调试通过;
撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。
6.3基础实验
[实验1] 二叉树的构造
实验内容与要求:
按先序序列构造一棵二叉链表表示的二叉树T;
分析:
二叉树是每个结点至多只有两棵子树,并有左、右之分,顺序不能任意颠倒的一种非线性结构。二叉树常用的存储结构是二叉链表形式,二叉链表由一个数据项data(用于存放结点的值)和两个指针项lchild、rchild(分别指向该结点的左、右子树)。结点及结构如图6-1所示:
//- - - - - - 二叉树的二叉链表存储表示模型- - - - - - -
typedef struct BiTNode{
? TElemType??????? data;
? Struct BiTNode?? * lchild, * rchild;? //左右孩子指针
}BiTNode, * BiTree;
将此结构定义放在一个头文件.h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出的及常量的定义。
Status CreateBiTree(BiTree T)
//按先序次序输入二叉树中结点的值(一个字符),#字符表示空树,
//构造二叉链表表示的二叉树T。
scanf(ch);
if (ch==#) T=NULL;
else {
if (!(T=(BiTNode *) malloc(sizeof(BiTNode)))) exit (OVERFLOW);
??? T-data = ch;????????????? //生成根结点
??? CreateBiTree(T-lchild);?? //生成左子树
??? CreateBiTree(T-rchild);?? //生成右子树
}
return OK;
}//CreateBiTree
参考程序:
//头文件BiTNode.h的内容如下:
#include stdio.h
#include stdlib.h
#include malloc.h
#define MAX 20
#define OK 1
#define ERROR 0
#define NULL 0
#define OVERFLOW 0
typedef char TElemType;
typedef int Status;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree(BiTree T)
{
char ch;
scanf(%c,ch);
if (ch==#) T=NULL; /* #代表空指针*/
else
{
T=(BiTNode*)malloc(sizeof(BiTNode));
if(!T) exit(OVERFLOW); /*申请结点 */
T-data=ch; /*生成根结点 */
T-lchild=CreateBiTree(T-lchild); /*构造左子树 */
T-rchild=CreateBiTree(T-rchild); /*构造右子树 */
}
//以下是主程序shiyan6_1_1.c
#include BiTNode.h
main()
{
BiTree T=NULL;
printf(\n请读入构造二叉树的字符序列:);
CreateBiTree(T); /*建立一棵二叉树T*/
}
[实验2] 二叉树的遍历
实验内容与要求:
对一棵二叉链表表示的二叉树进行先序遍历、中序遍历、后序遍历和层序遍历并分别输出遍历的结点顺序。
分析:
二叉树的先序遍历是:若二叉树为空,则空操作;否则,访问根结点,先序遍历左子树,先序遍历右子树。
二叉树的中序遍历是:若二叉树为空,则空操作;否则,中序遍历左子树,访问根结点,中序遍历右子树。
二叉树的后序遍历是:若二叉树为空,则空操作;否则,后序遍历左子树,后序遍历右子树;访问
您可能关注的文档
- 数学试题评析.doc
- 数学轮复习.doc
- 数学选修____计数原理___[综合训练B组].doc
- 数学频率与概率单元测试.doc
- 数学部分教案.doc
- 数学答案全部.doc
- 数学必修空间几何体_点直线平面之间的位置关系复习提纲[].doc
- 数学里也能耍流氓.doc
- 数学高考分类汇编选择填空题(理)——计数原理与参数方程.doc
- 数学职称考试.doc
- 洋葱销售SOP流程及关键动作相关知识测试试卷.docx
- 深度解析《GBT 43841-2024内蒙古绒山羊》.pptx
- 电气设备运维及机械部件相关知识测试试卷.docx
- 深度解析《GBT 43843-2024网络协同制造平台数据服务要求》.pptx
- 思维倾向与开放性自我评估试卷.docx
- 危险化学品企业特殊作业安全相关知识考试试卷.docx
- 深度解析《GBT 43844-2024IPv6地址分配和编码规则 接口标识符》.pptx
- 智慧教学整体解决方案(1).doc
- 多重耐药菌感染防治知识及预防措施试卷.docx
- 深度解析《GBT 43845-2024基于扫描氮-空位探针的微弱静磁场成像测量方法》.pptx
文档评论(0)