第6章 树和二叉树课件.pptVIP

  1. 1、本文档共92页,可阅读全部内容。
  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文档。上传文档
查看更多

第6章树和二叉树;6.1树的基本概念;A;上述树结构定义加上树的一些基本操作就构成了抽象数据类型树的定义。

ADTTree{

数据对象D:D是具有相同特性的数据元素的集合。

数据关系R:若D为空集,则称为空树;

若D仅含一个数据元素,则R为空集,否则R={H},H是如下二元关系:

(1)在D中存在唯一的称为根的数据元素root,它在关系H下无前驱;

(2)若D-{root}≠Φ,则存在D-{root}的一个划分D1,D2,D3,…,Dm(m0),对任意j≠k(1=j,k=m)有Dj∩Dk=Φ,且对任意的i(1≤i≤m),唯一存在数据元素xi∈Di,有root,xi∈H;

(3)对应于D-{root}的划分,H-{root,x1,root,x2,…,root,xm}有唯一的一个划分H1,H2,…,Hm(m0),对任意j≠k(1≤j,k≤m)有

Hj∩Hk=Φ,Hi是Di上的二元关系,(Di,{Hi})是一棵符合本定义的树,称为根root的子树。

基本操作P:书P119页;树的结点:包含一个数据元素及若干指向其子树的分支。;结点的度:结点拥有的子树称为结点的度。;叶子结点或终端结点:度为0的结点称为叶子结点或终端结点。;非终端结点或分支结点:度不为0的结点。;树的度:是树内各结点的度的最大值。;孩子(子结点):结点的子树的根称为该结点的孩子。;兄弟:同一个双亲的孩子之间互称兄弟。;祖先:从根到该结点所经分支上的所有结点。;子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。;结点的层次:从根开始定义起,根为第一层,根的孩子为第二层。若某结点在第l层,则其子树的根就在第l+1层。;森林:m(m=0)棵互不相交的树的集合。;3树的表示形式

⑴倒悬树。是最常用的表示形式,如书上图6.1(b)。

⑵嵌套集合。是一些集合的集体,对于任何两个集合,或者不相交,或者一个集合包含另一个集合。图6-2(a)是书上图6.1(b)树的嵌套集合形式。

⑶广义表形式。图6-2(b)是树的广义表形式。

⑷凹入法表示形式。见P120

树的表示方法的多样化说明了树结构的重要性。;图6-2树的表示形式;6.2二叉树;二叉树在树结构中起着非常重要的作用。因为二叉树结构简单,存储效率高,树的操作算法相对简单,且任??树都很容易转化成二叉树结构。上节中引入的有关树的术语也都适用于二叉树。

2二叉树的基本形态

二叉树有5种基本形态,如图6-3所示。;6.2.2二叉树的性质(性质1和性质2);性质3;完全二叉树和满二叉树是两种特殊形态的二叉树。

一棵深度为k且有2k-1个结点(除最后一层外其余各层上所有结点的度均为2)的二叉树称为满二叉树。;1;8;完全二叉树的性质(性质4与性质5);6.2.3二叉树的存储结构;a;例题1:现有如图A所示的一般二叉树的存储结构,请画出对应的二叉树的逻辑结构对应的图。;例题2:现有如图B所示的一般二叉树的存储结构,请画出对应的二叉树的逻辑结构对应的图。;(b)非完全二叉树;评价:在最坏情况下,一个深度为K且只有K个结点的单支树(树中不存在度为2的结点)即需要长度为2k-1的一维数组。;2链式存储结构(二叉链表)

设计不同的结点结构可构成不同的链式存储结构。

(1)结点的类型及其定义

①二叉链表结点。有三个域:一个数据域,两个分别指向左右子结点的指针域,如图6-7(a)所示。

typedefstruct{//结点结构

TElemTypedata;

structBiTNode*lchild,*rchild;//左右孩子指针

}BiTNode,*BiTree;;②三叉链表结点。除二叉链表的三个域外,再增加一个指针域,用来指向结点的父结点,如图6-7(b)所示。

typedefstruct{//结点结构

TElemTypedata;

structTriTNode*lchild,*rchild;//左右孩子指针

structTriTNode*parent;//双亲指针

}TriTNode,*TriTree;;(2)二叉树的链式存储形式

例如有一棵一般的二叉树,如图6-8(a)所示。以二叉链表和三叉链表方式存储的结构图分别如图6-8(b)、6-8(c)所示。;6.3遍历二叉树和线索二叉树;若以L、D、R分别表示遍历左子树、遍历根结点和遍历右子树,则有六

文档评论(0)

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

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

1亿VIP精品文档

相关文档