[2018年最新整理]C++与数据结构第三次上机实验——树.docxVIP

[2018年最新整理]C++与数据结构第三次上机实验——树.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2018年最新整理]C与数据结构第三次上机实验——树

实验三树实验目的和要求:掌握树、森林及二叉树的基本概念;掌握树、二叉树的存储结构;掌握树。二叉树的遍历;树和森林之间的转换。实验原理:树的定义:树是n个结点的有限集合T。如果n=0,则称为空树;如果n0,则在一棵树中:有且仅有一个特定的称为根的结点,它只有直接后继,但是没有直接前驱。当n1时,其余结点可分为m个互不相交的有限集合T1、T2、T3……,其中每一个集合本身又是一棵树,并且称为根的子树。每棵子树的根结点有且仅有一个直接前驱,但可以有零个或者多个直接后继。树的术语:树的结点:它包含数据元素及若干其指向其子树的分支。结点的度:终点所拥有的子树的棵树。树的度:树中所有结点度的最大值。叶结点:即度为零的结点,称为叶结点或者终端结点。分支结点:除叶结点之外的其他结点。孩子结点:若结点x有子树,则子树的根结点即称为结点x的孩子结点。双亲结点:若结点x有孩子结点,则该结点x称为这些孩子结点的双亲结点。兄弟结点:同一双亲的孩子结点之间称为兄弟。结点所处的层次:简称结点的层次,即从根到该结点所经过的分支条数。树的高度:树中结点的最大层次,称为树的高度或者深度。二叉树的定义:二叉树的定义:二叉树是n个结点的有限集,二叉树或者是一棵空树,或者是一棵由一个根结点和两棵互不相交的分别称为左子树和右子树所组成的非空树,左子树和右子树又同样是一棵二叉树。满二叉树的定义:若二叉树中每一层结点的个数都达到了最大,则称之为一棵满二叉树。完全二叉树的定义:若一棵二叉树至多只有最下面的结点的两层上的度数可以小于2,并且最下一层上的结点都集中于该层最左边的若干位置上,则此二叉树称为完全二叉树。二叉树的存储结构:顺序存储结构:顺序存储一棵二叉树时,首先对该树中每个结点进行编号,然后以各结点的编号为下标,把各结点的值对应存储到一维数组中。链式存储结构:通常采用的方法是,在每个结点中设置三个域:数据域、指向其左孩子的指针域、指向其右孩子的指针域。 5.二叉树的遍历:二叉树的遍历是按照一定的次序访问树中的所有结点,并且每个结点的值仅被访问一次的过程。根据二叉树的递归定义,二叉树是由三个基本单元组成:根结点、左子树、右子树,若用V、L、R分别表示上述三个基本单元,则共有六种遍历方案,即VLR、LVR、LRV、VRL、RVL和RLV。如果限定按先左子树后右子树的顺序遍历二叉树,那么就只有VLR、LVR和LRV三种遍历方式,分别称为前序遍历、中序遍历和后序遍历。前序遍历的操作过程:若二叉树为空,则空操作;否则先访问根结点,再前序遍历左子树,然后前序遍历右子树。中序遍历操作过程:若二叉树为空,则操作为空;否则先中序遍历左子树,然后访问根结点,最后中序遍历右子树。后续遍历的操作过程:若二叉树为空,则操作为空;否则先后序遍历左子树,然后后序遍历右子树,最后访问根结点。实验内容:算术表达式与二叉树之间存在着对应关系,编写一算法将前缀形式输入的算术表达式按中缀方式输出。程序设计:程序设计思想:主程序模块:void main(){初始化二叉树;创建二叉树;对T进行前序遍历得到前缀表达式;对T进行中序遍历得到中缀表达式;}二叉树模块 { 二叉树存储结构的定义;初始化二叉树;创建二叉树;前序遍历二叉树;中序遍历二叉树;}(2)源代码://算术表达式与二叉树表达式之间存在着对应关系,编写一个算法将前缀形式的输入算术表达式按中缀方式输出 #includeiostreamusing namespace std; #includestdio.h #includestdlib.h #includestring.hclassBinTreeNode {public:char data[20];BinTreeNode *Lchild;BinTreeNode *Rchild;BinTreeNode *root;BinTreeNode(){root=NULL;} //建立空的二叉树BinTreeNode(BinTreeNode *T) //初始化二叉树 { T-Lchild=NULL; T-Rchild=NULL; }voidcreattree(BinTreeNode *T); int Preorder (BinTreeNode*T); //前序遍历二叉树intInorder(BinTreeNode*T); //中序遍历二叉树int Visit(char data[20]); //定义访问函数 };voidBinTreeNode::creattree(BinTreeNode *T){charch[20];scanf(%s,ch); if(strcmp(ch,+)==0|| strcm

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档