数据结构与算法分析5【荐】.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章 树 5.1 树的概念 5.2 二叉树的定义 5.3 二叉树的性质 5.4 二叉树的存储结构 5.5 二叉树的遍历 5.6 线索二叉树 5.7 树和二叉树的转换及树的存储结构 5.8 哈夫曼树及其应用 5.1 树的概念 5.1.1 树的定义 树是一种数据结构,表示为TREE (D,R); 其中:D是具有相同特性的数据元素的集合;R是元素集合D上的关系集合,如果D中只含有一个数据元素,则R为空集。 或者用递归定义为: 树是N(N 0)个结点的有限集合,其唯一关系具有下列属性: 集合中存在唯一的一个结点,称为树根,该结点没有前驱;除根结点外,其余结点分为M(M≥0)个互不相交的集合,其中每一个集合都是一棵树,并称其为根的子树。 5.1 树的概念 5.1.2 基本术语 一个结点的子树个数称为该结点的度(degree) 一棵树中结点度的最大值称为该树的度 度为零的结点称为叶子(leaf)或者终端结点 度不为零的结点称为分支结点或者非终端结点 除根结点之外的分支结点统称为内部结点 树中结点的后继结点称为儿子(child)或者儿子结点,简称儿子 结点的前驱结点称为儿子的双亲(parents)或者父亲结点,简称父亲 同一个父亲的儿子互称为兄弟(sibling) 5.1 树的概念 若树中存在一个结点序列k1k2k3…kj,使得ki是ki+1的父亲(1≤i<j),则称该结点序列是从k1到kj的一条路径(path)或者道路 路径的长度等于j-1,它是该路径所经过的边(即连接两个结点的线段)的数目 若树中结点k到ks存在一条路径,则称k是ks的祖先(Ancestor),ks是k的子孙(Descendant) 结点的层数(level)是从根开始算起的。设根结点的层数为1,其余结点的层数等于其父亲结点的层数加1 树中结点的最大层数称为树的高度(Height)或者深度(Depth) 5.1 树的概念 若把树中每个结点的各子树看成从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree);否则称为无序树(Unordered Tree) 森林(Forest)是m(m≥0)棵互不相交树的集合 树形结构是非线性结构 祖先与子孙的关系则是对父子关系的延伸,其定义了树中结点的纵向次序 如果规定k1和k2是兄弟,且k1在k2的左边,则k1的任一子孙都在k2的任一子孙的左边,则定义了树中结点的横向次序 5.2 二叉树的定义 二叉树是由n(n≥0)结点的有限集合,此集合或者为空,或者由一个根结点加上两棵分别称为左、右子树的,互不相交的二叉树组成 二叉树可以为空集,因此根可以有空的左子树或者右子树,亦或者左、右子树皆为空 从二叉树定义中可以看出,二叉树结构与一般树结构区别如下: (1)二叉树可以为空树,即不包含任何结点;一般树至少应有一个结点。 (2)二叉树区别于度数为2的有序树,在二叉树中允许某些结点只有右子树而没有左子树;而有序树中,一个结点如果没有第一子树就不可能有第二子树的存在。 5.3 二叉树的性质 5.3.1 二叉树性质 性质1 二叉树第i(i≥1)层上的结点数最多为2i-1 性质2 高度为k的二叉树最多有2k-1个结点 性质3 对任何二叉树T,设n0、n1、n2分别表示度数为0、1、2的结点个数,则n0 n2+1 5.3 二叉树的性质 性质4 具有n个结点的完全二叉树(包括满二叉树)的高度为 (或者 ) 性质5 满二叉树原理 非空满二叉树的叶结点数等于其分支结点数加1 性质6 一棵非空二叉树空子树的数目等于其结点数目加1 5.3 二叉树的性质 5.3.2 二叉树的抽象数据类型 下列给出一个二叉树结点的JAVA接口,称之为BinNode。BinNode类中存储了指向Object类的引用。创建二叉树时,可以根据需要而采用实际的数据类型。成员函数包括返回元素的值,返回左、右结点指针,设置元素的值,以了标志该结点是否为叶结点。 interface BinNode //二叉树结点的抽象数据类型 //返回并设置元素值 public Object element ; public Object setElement Object v ; 5.3 二叉树的性质 //返回并设置左孩子 public Binnode left ; public Binnode setLeft BinNode p ; ? //返回并设置右孩子 public Binnode right ; public Binnode setRight BinNode p ; ? //判断是否为叶结点 public boolean isLeaf ; //interface BinNode 5.4 二叉树的存储结

文档评论(0)

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

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

1亿VIP精品文档

相关文档