数据结构第7章_二叉树.pptxVIP

  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文档。上传文档
查看更多
第7章 二叉树; 7.1 二叉树的基本概念 ;二叉树有以下五种基本形态: ; 树型结构中使用的术语如父母(双亲或前件)、子女(后件)、祖先、子孙、兄弟和路径等在二叉树中仍然可以沿用,但值得注意的是,二叉树并非一般树型结构的特殊形式,它们为两种不同的数据结构。 二叉树与一般树型结构的主要区别在于: (1)二叉树中每个非空结点最多只有两个子女,而 一般的树型结构中每个非空结点可以有0到多 个子女; (2)二叉树中结点的子树要区分左子树和右子树, 即使在结点只有一棵子树的情况下也要明确指 出是左子树还是右子树。;二叉树具有以下重要性质: 性质1 一棵非空二叉树的第i层上至多有2i-1个结点 (i≥1)。 ;性质2 深度为h的二叉树至多有2h-1个结点(h1)。 根据性质1,深度为h的二叉树最多具有的结点的个数为20+21+22+…+2h-1=2h-1。 ;证明:假设二叉树中总的结点个数为n ,度为1的结点个数为n1,则有: n=n0+n1+n2 又由于在二叉树中除根结点外,其它结点均通过一条树枝且仅通过一条树枝与其父母结点相连,即除根结点外,其它结点与树中的树枝存在一一对应的关系;而二叉树中树枝的总条数为n1+2*n2,因而二叉树总结点的个数为: n=n1+2*n2+1 于是有: n0+n1+n2=n1+2*n2+1 显然n0=n2+1成立。; 如果一棵二叉树中所有终端结点均位于同一层次,而其它非终端结点的度数均为2,则称此二叉树为满二叉树。在满二叉树中,若其深度为h,则其所包含的结点个数必为2h-1。下图中的二叉树即为一棵深度为3的满二叉树,其结点的个数为23-1=7。 ; 如果一棵二叉树扣除其最大层次那层后即成为一棵满二叉树,且层次最大那层的所有结点均向左靠齐,则称该二叉树为完全二叉树。通俗地说,完全二叉树中只有最下面的两层结点的度数可以小于2,且最下面一层的结点都集中在该层最左边的若干位置上。下图所示的二叉树即为一棵深度为3的完全二叉树。 ;对于完全二叉树,具有以下性质: 性质4 对于具??n个结点的完全二叉树,如果按照从上到下、同一层次上的结点按从左到右的顺序对二叉树中的所有结点从1开始顺序编号,则对于序号为i的结点,有: (1)如果i1,则序号为i的结点其双亲结点的序号 为?i/2? (?i/2?表示对i/2的值取整);如果 i=1, 则结点i为根结点,没有双亲;; (2)如果2in,则结点i无左子女(此时结点i为终 端结点);否则其左子女为结点2i; (3)如果2i+1n,则结点i无右子女;否则其右子 女为结点2i+1。 ;ADT bintree { 数据对象D:D是具有相同性质的数据元素构成的集合。 数据关系R:如果D为空或D仅含一个元素,则R为空; 否则D中存在一个特殊的结点root,称之为根结点其无前驱;其它结点被分成互不相交的两个集合,分别构成root的左子树l和右子树r;若l和r非空,则它们的根结点lroot和rroot分别称为整棵二叉树根结点root的后继结点;左子树l和右子树r也是二叉树,因而它们中数据元素间的关系也同样满足R的定义。; 二叉树常用的存储结构有两种:顺序存储结构和链式存储结构。 7.3.1 顺序存储结构 顺序存储结构是使用一组连续的空间存储二叉树的数据元素和数据元素之间的关系。因此必须将二叉树中所有的结点排成一个适当的线性序列,在这个线性序列中应采用有效的方式体现结点之间的逻辑关系。 ;1 、完全二叉树的顺序存储 对于一棵具有n个结点的完全二叉树,我们可以按从上到下、同一层次按从左到右的顺序依次将结点存入一个一维数组中。根据上述性质4,无须附加任何其它信息就能根据每个结点的下标找到它的子女结点和双亲结点。 ;2 一般二叉树的顺序存储 由于二叉树中每个结点最多只有两个子女,于是存储一个结点时,除了包含结点本身的属性值外,另外增加两个域,分别用来指向该结点的两个子女在数组中的下标。 ;一般二叉树顺序存储数据结构的定义如下: #define MAXSIZE 20 typedef char datatype; /*结点值的类型*/ typedef struct { datatype data; int lchild,rchild; } node; /*二叉树

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档