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

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

举报
开通vip

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

数据结构 实验四 二叉树的基本操作
实验四 二叉树的基本操作 一、实验目的:  (1)掌握二叉树的定义和存储表示,学会建立一棵特定二叉树的方法; (2)掌握二叉树的遍历算法(先序、中序、后序遍历算法)的思想; (3)掌握二叉树和叶子数、深度之间的关系及联系。 二、实验内容: 构造二叉树,再实现二叉树的先序、中序、后序遍历,最后统计二叉树的叶子数和深度。 三、实验步骤: (一) 需求 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析   1. 二叉树的建立首先要建立一个二叉链表的结构体,包含根节点和左右子树。因为树的每一个左右子树又是一颗二叉树,所以用递归的方法来建立其左右子树。二叉树的遍历是一种把二叉树的每一个节点访问并输出的过程,遍历时根结点与左右孩子的输出顺序构成了不同的遍历方法,这个过程需要按照不同的遍历的方法,先输出根结点还是先输出左右孩子,可以用选择语句来实现。 2.程序的执行命令为:  1)构造结点类型,然后创建二叉树。 2)根据提示,从键盘输入各个结点。  3)通过选择一种方式(先序、中序或者后序)遍历。 4)输出结果,结束。 (二)概要设计  1.二叉树的二叉链表结点存储类型定义  typedef struct Node {  DataType data;  struct Node *LChild;  struct Node *RChild; }BitNode,*BitTree;  2.建立如下图所示二叉树: 3.本程序包含六个模块 1) 主程序模块  2)先序遍历模块 3)中序遍历模块 4)后序遍历模块 5)叶子数模块 6)深度模块 四、测试结果  1. 进入演示程序后的显示主界面: 请输入二叉树中的元素;  先序、中序、后序遍历和叶子数、深度分别输出结果。  2.测试结果  以扩展先序遍历序列输入,其中#代表空子树:ABC##DE#G##F###   先序遍历序列为:ABCDEGF    中序遍历序列为:CBEGDFA    后序遍历序列为:CGEFDBA  此二叉树的叶子数为:3   此二叉树的深度为:5  3.程序运行结果截图: 五、源代码 #include #include //节点声明,数据域、左孩子指针、右孩子指针 typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;               //先序建立二叉树 BiTree CreateBiTree(){ char ch; BiTree T; scanf("%c",&ch); if(ch=='#')T=NULL; else{ T = (BiTree)malloc(sizeof(BiTNode)); T->data = ch; T->lchild = CreateBiTree(); T->rchild = CreateBiTree(); } return T;//返回根节点 } //先序遍历 void PreOrderTraverse(BiTree T){ if(T){ printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } //中序遍历 void InOrderTraverse(BiTree T){ if(T){ InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild); } } //后序遍历 void PostOrderTraverse(BiTree T){ if(T){ PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c",T->data); } } //求二叉树的深度 int Depth(BiTree T)    { int dep=0,depl,depr; if(!T) dep=0; else { depl=Depth(T->lchild); depr=Depth(T->rchild); dep=1+(depl>depr?depl:depr); } return dep; } //计算叶子节点数 int leef(BiTree T){ if(!T) return 0; else if(T->lchild ==NULL&&T->rchild ==NULL) return 1; else  return leef(T->lchild) +leef(T->rchild ); } //主函数 void main(){ BiTree T; printf("请按先序输入序列(其中的“#”表示空)\n\n"); T = CreateBiTree();//建立二叉树 printf("\n先序遍历结果为:"); PreOrderTraverse(T);//先序遍历输出 printf("\n\n中序遍历结果为:"); InOrderTraverse(T);//中序遍历输出 printf("\n\n后序遍历结果为:"); PostOrderTraverse(T);//后序遍历输出 printf("\n\n二叉树深度为:%d\n",Depth(T)); Depth(T);//计算二叉树深 printf("\n叶子节点数为:%d\n\n",leef(T)); leef(T);//计算叶子节点数 }
本文档为【数据结构 实验四 二叉树的基本操作】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_003124
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:0
分类:互联网
上传时间:2019-09-10
浏览量:72