数据结构实验四二叉树的基本操作

数据结构实验四二叉树的基本操作

ID:35504824

大小:92.23 KB

页数:7页

时间:2019-03-25

数据结构实验四二叉树的基本操作_第1页
数据结构实验四二叉树的基本操作_第2页
数据结构实验四二叉树的基本操作_第3页
数据结构实验四二叉树的基本操作_第4页
数据结构实验四二叉树的基本操作_第5页
资源描述:

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

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

2、不同的遍历方法,这个过程需要按照不同的遍历的方法,先输出根结点还是先输出左右孩子,可以用选择语句来实现。2.程序的执行命令为:1)构造结点类型,然后创建二叉树。2)根据提示,从键盘输入各个结点。3)通过选择一种方式(先序、中序或者后序)遍历。4)输出结果,结束°(二)概要设计1•二叉树的二叉链表结点存储类型定义typedefstructNode{DataTypedata;structNode*LChild;structNode*RChild;}BitNode,*BitTree;2•建立如下图所示二叉树:3•本程序包含六个模块1)主程序模块2)先序遍历模块3)中

3、序遍历模块4)后序遍历模块5)叶子数模块6)深度模块四、测试结果1.进入演示程序后的显示主界面:请输入二叉树中的元素;先序、中序、后序遍历和叶子数、深度分别输出结果。2测试结果以扩展先序遍历序列输入,其中#代表空子树:ABC##DE#G##F###先序遍历序列为:ABCDEGF中序遍历序列为:CBEGDFA后序遍历序列为:CGEFDBA此二叉树的叶子数为:3此二叉树的深度为:53•程序运行结果截图:•C:UserslenovoDesktopDebugOO.exe*请按先序输入序列(其中的表示空)先序遍历结果为:ABCDEGF中序遍历结果为:CBEGD

4、FA后序遍历结果为:CGEFDBA二叉树深度为:5叶子节点数为:3Pressanykeytocontinue五、源代码#ineludeinclude〃节点声明,数据域、左孩子指针、右孩子指针typedefstructBiTNode{chardata;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;〃先序建立二叉树BiTreeCreateBiTree(){charch;BiTreeT;scanf(”%c”,&ch);if(ch=#)T=NULL;else{T=(BiTree)malloc(sizeof(BiTNode)

5、);T->data=ch;T->lchild=CreateBiTree();T->rchild=CreateBiTree();}returnT;〃返冋根节点〃先序遍历voidPreOrderTraverse(BiTreeT){if(T){printf(H%c,,,T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}〃中序遍历voidlnOrderTraverse(BiTreeT){if(T){InOrderTraverse(T->lchild);printf(”%c”,T・>dat

6、a);InOrderTraverse(T->rchild);〃后序遍历voidPostOrderTraverse(BiTreeT){if(T){PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);printf(M%c",T->data);}〃求二叉树的深度intDepth(BiTreeT)intdep=O,depl,depr;if(!T)dep=O;else{depl=Depth(T->lchild);depr=Depth(T->rchild);dep=1+(depl>depr?depl:depr

7、);}returndep;〃计算叶子节点数intleef(BiTreeT){if(!T)return0;elseif(T->lchild==NULL&&T->rchild==NULL)return1;elsereturnleef(T->lchild)+leef(T->rchild);//主函数voidmain(){BiTreeT;printf(”请按先序输入序列(其中的#表示空)“);T=CreateBiTree();//建立二叉树printf(H先序遍历结果为:”);PreOrderTraverse(T);〃先序遍历输出printf(n中

8、序遍历结果为:”);InOrderTr

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

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

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