2.5树与二叉树.docVIP

  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文档。上传文档
查看更多
2.5树与二叉树 树型结构是一类很重要的非线性数据结构,在这类结构中,元素结点之间存在明显的分支和层次关系。 2.5.1 树的定义及其存储结构 树的定义和术语 树是由n个(n≥0)结点组成的有限集合T,其中有且仅有一个结点称为根结点(root),其余结点可以分为m(m≥0)个互不相交的有限集合T1,T2,…,Tm,其中每个集合Ti本身又是一棵树,称为根结点root的子树。当n=0时称为空树。 这是一个递归的描述,即在买偶数树时又用到树本身这个术语。图2.33所示为一棵树,A为根结点,期于结点分为三个不相交的子集T1,T2,T3,它们均为根结点A下的三棵树,而这三棵树本身也是树。 用二元组关系来定义树为 Tree=(T,R) 数据结构树(Tree)由数据元素集合T及各种R组成,其中T 是具有相同类型的数据元素集合T ={x1,x2,…,xn}。若T为空集(T=?),则R=?,称为空树,否则R是T上某个二元关系H的集合,即R={H}。H的描述如下: (1)在T中存在唯一的称为根的元素root,它在H关系下无前趋。 (2)若T-{root}≠?,则存在m个子集T1,T2,…,Tm(m0),对任意的j≠k(1≤j,k≤m),有Tj∩Tk= ?,则存在唯一的数据元素xi∈Ti(1≤i≤m),满足root,xi∈H。 (3)对应于 T1,T2,…,Tm,H-{root,x1,…,root,xm},满足root,xi∈H1,H2,…,Hm(m0),对任意的j≠k(1≤j,k≤m)有Hj∩Hk= ?,Hj满足在Ti上的二元关系。因此(Ti,{Hi})也是一棵符合本定义的树,称为根root的子树。 树结构中常用的术语有 .结点(node):表示树中的元素。 .结点的度(degree):结点拥有的子树数,如图2.33中结点A的度为3,C的度为1。一棵树中最大的结点度数为这棵数的度,图2.33中树的度为3。 .叶子(leaf):度为零的结点,又称为端结点。 .孩子(child):除根结点外,每个结点都是其前趋结点的孩子。 .双亲(parents):对应上述孩子结点的上层结点称为这些结点的双亲。例如图2.33中,D是A的孩子,A是D,C,B的双亲。 .兄弟(sibling):同一双亲的孩子。 .结点的层次(level):从根结点开始算起,根为第一层,根的直接后继结点为第二层,其余个层次依次类推。例如图2.33中共分为4层。 .深度(depth):树中结点的最大层次数。图2.33中树的深度为4。 .森林(forest):是m(m≥0)棵互不相交的树的集合。 .有序树:树中结点在同层中按从左至右有序排列、不能互换的称为有序树,反之称为无序树。 树的存储结构 仅讨论链式存储结构。 异构型:节省存储空间,运算不便。 同构型:运算方便,浪费空间。 假设有一棵具有n个结点的k叉树,则有nk个指针域,其中有用的指针域为n-1个,因此空链域个数为nk-(n-1)=n(k-1)+1个。 不同的k值进行比较: k越大,空链域比例越高,k=2时比例最低,因此着重讨论二叉树结构。 2二叉树及其性质 二叉树定义及其存储结构 二叉树是n(n≥0)个结点的有限集合,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。 通常用具有两个指针域的链表作为二叉树的存储结构,其中每个结点由数据域(data)、左指针域(L child)和右指针域(R child)组成,即 L child data R child 二叉树的链表结构如图2.35(b)所示。 二叉树的基本性质 二叉树的第I层上至多有2i-1(i≥1)个结点。 1,21-1.2,22-1………….. 20+21+22+23+………2h-1 =1+20+21+22+23+………2h-1-1 =2h-1 深度为h的二叉树中至多含有2h-1个结点。 1,21-1.2,22-1… 在任意二叉树中,若有n0个叶子结点,n2个度为2 的结点,则必有:n0=n2+1。 每增加一个度为2的结点,叶子结点就增加一个。 几种特殊形式的二叉树 满二叉树: 深度为h含有2h-1个结点的二叉树为满二叉树。图2.36所示为一棵深度为4的满二叉树。 完全二叉树 如果一棵n个结点的二叉树,按与满二叉树相同的编号方式对结点进行编号,若树中n个结点和满二叉树1~n编号完全一致,则称该树 为完全二叉树,如图2.37(a)所示;而图2.37(b)就不是完全二叉树。 平衡二叉树 平衡二叉树或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树 ,且左子树和右子树的深度之差的绝对值不超过1。图2.38(a)为平衡二叉树,(b)为不平衡二叉树。 一般树转换为二叉树 在兄弟结点

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档