二叉树的基本操作实验.doc
《二叉树的基本操作实验.doc》由会员分享,可在线阅读,更多相关《二叉树的基本操作实验.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验三 二叉树的基本运算一、实验目的1、使学生熟练掌握二叉树的逻辑结构和存储结构。2、熟练掌握二叉树的各种遍历算法。二、实验内容问题描述建立一棵二叉树,试编程实现二叉树的如下基本操作:1. 按先序序列构造一棵二叉链表表示的二叉树T;2. 对这棵二叉树进行遍历:先序、中序、后序以及层次遍历,分别输出结点的遍历序列;3. 求二叉树的深度/结点数目/叶结点数目;(选做)4. 将二叉树每个结点的左右子树交换位置。(选做) 基本要求从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),测试数据如输入:ABCDEGF(其中表示空格字符) 则输出结果为 先序:ABCDEGF 中序:CB
2、EGDFA 后序:CGEFDBA层序:ABCDEFG选作内容采用非递归算法实现二叉树遍历。三、实验前的准备工作1、掌握树的逻辑结构。2、掌握二叉树的逻辑结构和存储结构。3、掌握二叉树的各种遍历算法的实现。一 实验分析本次试验是关于二叉树的常见操作,主要是二叉树的建立和遍历。二叉树的遍历有多种方法,本次试验我采用递归法,递归法比较简单。 二 概要设计功能实现1.int CreatBiTree(BiTree &T) 用递归的方法先序建立二叉树, 并用链表储存该二叉树2.int PreTravel(BiTree &T) 前序遍历3. int MidTravel(BiTree &T) 中序遍历4.in
3、t PostTravel(BiTree &T) 后序遍历5.int Depth(BiTree &T) /计算树的深度6.int howmuch(BiTree T,int h) 采用树节点指针数组,用于存放遍历到的元素地址,如果有左孩子,存入地址,j加一 ,否则没操作,通过访问数组输出层次遍历的结果。k计算叶子数,j为总节点。 H=0printf(%d, j)h=1真printf(%d,k)h=2for(i=0;idata)printf(参数错误)真真真假假假假7. int exchang(BiTree &T) 交换左右子树,利用递归,当有左右孩子时才交换三 详细设计#include#inclu
4、detypedef struct BiTNodechar data; struct BiTNode *lchild,*rchild;BiTNode,*BiTree;int CreatBiTree(BiTree &T)/先序法创建二叉树char ch;if(ch=getchar()= )T=NULL;elseT=(BiTNode*)malloc(sizeof(BiTNode);if(!T)exit(1);T-data=ch;CreatBiTree(T-lchild);CreatBiTree(T-rchild);return 0;int PreTravel(BiTree &T)/前序遍历if(T)
5、printf(%c,T-data);PreTravel(T-lchild);PreTravel(T-rchild);return 0;int MidTravel(BiTree &T)/中序遍历if(T)MidTravel(T-lchild);printf(%c,T-data);MidTravel(T-rchild);return 0;int PostTravel(BiTree &T)/后序遍历if(T)PostTravel(T-lchild);PostTravel(T-rchild);printf(%c,T-data);return 0;int howmuch(BiTree T,int h)B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 基本 操作 实验
限制150内