第5章节树(Tree)1.pptVIP

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

第5章 树(Tree) 5.1 树 5.1.1 树的定义 5.1.2 若干术语 5.1.3 树的5种表示法: 图形表示法 5.1.4 树的抽象数据类型 5.1.5 树的存储结构 树的结点之间的逻辑关系主要有双亲-孩子关系,兄弟关系。因此,从结点之间的逻辑关系分,树的存储结构主要有四种组合: 双亲表示法 孩子表示法 双亲孩子表示法 孩子兄弟表示法 5.2 二叉树 为何要重点研究每结点最多只有两个 “叉” 的树? 二叉树的结构最简单,规律性最强; 可以证明,所有树都能转为唯一对应的二叉树,不失一般性。 5.2.1 二叉树的定义 二、满二叉树   在一棵二叉树中,如果所有分支结点都 存在左子树和右子树,并且所有叶子结点都 在同一层上,这样的二叉树称为满二叉树。 (一棵深度为k((k≥-1)且有2k+1-1个结点的 二叉树称为满二叉树。) 三、完全二叉树 图6.4   如果一棵深度为k,有n个结点的二叉树 中各结点能够与深度为k的顺序编号的满二叉 树从1到n标号的结点相对应的二叉树称为完 全二叉树。(从上至下、从左至右) 特点: (1)所有的叶结点都出现在第k层或k-1层。 图6.5 (2)若任一结点,如果其右子树的最大层次为i,则其左子树的 最大层次为i或i+1。 三、满二叉树与完全二叉树的区别    满二叉树是叶子一个也不少的树,而完全二叉树虽然前k-1层是满的,但最底层却允许在右边缺少连续若干个结点。满二叉树是完全二叉树的一个特例。 四、为何要研究这两种特殊形式?    因为它们在顺序存储方式下可以复原。 5.2.1-1 二叉树的抽象数据类型 5.2.2 二叉树的性质 5.3 二叉树的设计和实现 5.3.1 二叉树的顺序存储结构 二叉树的存储结构主要有三种:顺序存储结构、链式存储结构和仿真指针存储结构。 1. 二叉树的顺序存储结构 完全二叉树的结点可按从上至下和从左至右的次序存储在一维数组中,其结点之间的关系可由公式计算得到,这就是二叉树的顺序存储结构。图7-4在数组中的存储结构为: 数组 下标 0 1 2 3 4 5 6 3. 二叉树的仿真指针 5.3.2 二叉链存储结构的二叉树操作实现 在二叉链存储结构下,针对一棵二叉树,主要涉及如下几个功能模块: 二叉树的初始化操作; 二叉树中给某结点插入一个左结点的操作; 二叉树中给某结点插入一个右结点的操作; 删除二叉树中某结点的左子树操作; 删除二叉树中某结点的右子树操作。 各算法的基本思想及程序实现如下: typedef struct Node { DataType data; struct Node *leftChild; struct Node *rightChild; }BiTreeNode; /*结点的结构体定义*/ 2.二叉树中给某结点插入一个左结点的操作 算法的基本思想: 若当前结点(假设为curr)非空,在curr的左子树插入元素值为x的新结点 ,原curr所指结点的左子树成为新插入结点的左子树。若插入成功返回新插入结点的指针,否则返回空指针。 4.删除二叉树中某结点的左子树操作 例:编写一个建立图6-6(b)所示的带头结点的二叉链存储结构二叉树的程序。 设计:假设上述二叉树结点结构体定义和二叉树操作实现函数存放在文件“Bitree.h”中,程序设计如下: #include stdlib.h #include stdio.h typedef char DataType; #include Bitree.h 小结 5.1 树的基本概念 5.2 二叉树 二叉树的概念 两种特殊的二叉树 二叉树的性质 5.3 二叉树的设计和实现 5.3.1 二叉树的存储结构 5.3.2 二叉链存储结构的二叉树操作实现 下节课内容 二叉树遍历和线索二叉树 练习: 问题1:什么是二叉树?简述树和二叉树的不同点。 答: (1)树 (2)二叉树 (3)二叉树 二叉树是由n(n≥0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两

文档评论(0)

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

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

1亿VIP精品文档

相关文档