数据结构-实验四-二叉树的基本操作学习资料.docx

数据结构-实验四-二叉树的基本操作学习资料.docx

ID:57127721

大小:38.79 KB

页数:8页

时间:2020-08-03

数据结构-实验四-二叉树的基本操作学习资料.docx_第1页
数据结构-实验四-二叉树的基本操作学习资料.docx_第2页
数据结构-实验四-二叉树的基本操作学习资料.docx_第3页
数据结构-实验四-二叉树的基本操作学习资料.docx_第4页
数据结构-实验四-二叉树的基本操作学习资料.docx_第5页
资源描述:

《数据结构-实验四-二叉树的基本操作学习资料.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构-实验四-二叉树的基本操作精品文档 实验四二叉树的基本操作一、实验目的:   (1)掌握二叉树的定义和存储表示,学会建立一棵特定二叉树的方法;  (2)掌握二叉树的遍历算法(先序、中序、后序遍历算法)的思想;  (3)掌握二叉树和叶子数、深度之间的关系及联系。二、实验内容:  构造二叉树,再实现二叉树的先序、中序、后序遍历,最后统计二叉树的叶子数和深度。三、实验步骤:  (一)需求分析   1.二叉树的建立首先要建立一个二叉链表的结构体,包含根节点和左右子树。因为树的每一个左右子树又是一颗二叉树,所以用递归的方法来建立其左右子树。二叉树的遍历是一种把二叉树的每一个

2、节点访问并输出的过程,遍历时根结点与左右孩子的输出顺序构成了不同的遍历方法,这个过程需要按照不同的遍历的方法,先输出根结点还是先输出左右孩子,可以用选择语句来实现。  2.程序的执行命令为:   1)构造结点类型,然后创建二叉树。  2)根据提示,从键盘输入各个结点。   3)通过选择一种方式(先序、中序或者后序)遍历。  4)输出结果,结束。  (二)概要设计   1.二叉树的二叉链表结点存储类型定义 收集于网络,如有侵权请联系管理员删除精品文档   typedefstructNode{     DataTypedata;     structNode*LChild; 

3、    structNode*RChild;    }BitNode,*BitTree;     2.建立如下图所示二叉树:       3.本程序包含六个模块    1)主程序模块     2)先序遍历模块    3)中序遍历模块    4)后序遍历模块收集于网络,如有侵权请联系管理员删除精品文档    5)叶子数模块    6)深度模块 四、测试结果    1.进入演示程序后的显示主界面:    请输入二叉树中的元素;    先序、中序、后序遍历和叶子数、深度分别输出结果。    2.测试结果    以扩展先序遍历序列输入,其中#代表空子树:ABC##DE#G##F#

4、##    先序遍历序列为:ABCDEGF     中序遍历序列为:CBEGDFA     后序遍历序列为:CGEFDBA    此二叉树的叶子数为:3    此二叉树的深度为:5    3.程序运行结果截图:收集于网络,如有侵权请联系管理员删除精品文档五、源代码#include#include//节点声明,数据域、左孩子指针、右孩子指针typedefstructBiTNode{  chardata;  structBiTNode*lchild,*rchild;}BiTNode,*BiTree;       //先序建立二叉树收集于网络,如有侵权请联系管理员删除精品文档B

5、iTreeCreateBiTree(){  charch;BiTreeT;  scanf("%c",&ch);  if(ch=='#')T=NULL;  else{    T=(BiTree)malloc(sizeof(BiTNode));    T->data=ch;    T->lchild=CreateBiTree();    T->rchild=CreateBiTree();  }  returnT;//返回根节点}//先序遍历voidPreOrderTraverse(BiTreeT){  if(T){    printf("%c",T->data);    Pr

6、eOrderTraverse(T->lchild);    PreOrderTraverse(T->rchild);  }} //中序遍历voidInOrderTraverse(BiTreeT){  if(T){    InOrderTraverse(T->lchild);    printf("%c",T->data);    InOrderTraverse(T->rchild);  }}收集于网络,如有侵权请联系管理员删除精品文档//后序遍历voidPostOrderTraverse(BiTreeT){  if(T){    PostOrderTraverse(T->

7、lchild);    PostOrderTraverse(T->rchild);    printf("%c",T->data);  }}//求二叉树的深度intDepth(BiTreeT)  {intdep=0,depl,depr;if(!T)dep=0;else{depl=Depth(T->lchild);depr=Depth(T->rchild);dep=1+(depl>depr?depl:depr);}returndep;}//计算叶子节点数intleef(BiTreeT){if(!T)return0;elseif(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。