树和二叉树的物理实现演示文稿.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
空间开销 有n个结点的满二叉树 每个结点都存储两个子结点指针和一个数据 去掉叶结点中的指针 只有叶结点存储数据(分支结点的数据区没有使用) 分支结点只存储指针, 叶结点只存储数据 总共需要空间 2pn+dn 2pn/2+dn 2pn/2+dn 2pn/2+dn/2 结构性开销在全部开销中所占比例 若p=d =2/3 =1/2 =3/4 =2/3 * 要点回顾 使用指针实现二叉树 使用数组实现二叉树 树型结构是一种动态的,非线性的,可描述结构层次特性的数据结构,如何物理存数(二叉)树是非常重要的! 二叉树的性质是很重要的 * 课后思考 通过对二叉树存储结构的学习,请思考如何把实际问题中的具有树型关系的数据存储到物理存储结构(内存)中? 模拟可能的实际树型关系的数据(如何表示),并设计方法如何用某种选定的树型物理存储结构来存储。 请邮件告诉我(lixhong@263.net) * 二叉树的遍历。 课后预习 * * 实现树的最简单方法就是对每个结点只保存一个指针域指向其父结点。 父指针表示法的说明【P128 图6.5】 很明显,这种实现并非出于一般性的目的,因为。。。【P126最后一段】 * 【P131 6.3的一段】 --- The next several slides show various possible implementations for general trees. 以下几个页讲述了几种树的表示法。 A key gauge for the quality of these representations is how well they perform the key tasks of left-child, right-sibling, and parent. This representation is poor for finding the right sibling of a node. 衡量这些表示法的好坏是看它们完成关键任务(左孩子,右兄弟,父结点)的性能。 * 子结点表示法:这是一种很简单的表示方法,其中每个分支结点均存储其子结点按照一定顺序形成的一个链表。 --- 说明【P132第一段】 --- 这种表示法在查找一个结点的右兄弟时效果不好 * Note: Two trees share the same array. 注意:两棵树存储在同一数组中的情况 每个结点存储结点的值以及指向父结点、最左子结点和右側兄弟结点的指针。这样,抽象数据类型的基本操作可通过读取结点中的一个值来实现。如果两棵树存储在同一个数组中,那么把其中一棵添加为另一棵树的子树只需要简单地设置三个指针值即可。 * Here, the two trees are joined together. Few links need to be adjusted in the implementation to support this join action. 如果两棵树存储在同一个数组中,那么把其中一棵添加为另一棵树的子树只需要简单地设置三个指针值即可。 * 上述两种实现树的方法是通过数组来存储结点,下面接着尝试将链接表示法扩展到树 【P132最后一段】 对任意一个结点可能有的子结点数目加以限制,并且对每个结点分配确定数目的指针域 两个缺点:。。。 --- 为每个结点分配可变的存储空间 * Essentially an array-based list of children. 当生成一个结点时就要知道它的子结点的数目,以便分配空间 * Essentially a linked list of children. 本质上是基于链表的 子结点表 每个结点存储一条子结点指针链表 链表实现法,每个结点存储一条子结点指针链表。这种表示法本质上是一个基于数组的子结点表 表示法。 但它可动态地分配结点空间,而不是把结点分配在数组中。 * The result is essentially a dynamic implementation for the left child/right sibling representation for general trees. 这个结果的本质 是 对于树的左子结点/右兄弟结点表示法 的 动态实现 新的二叉树结构指向两个“子结点”。左子结点是原树中结点的最左子结点。右子结点是结点原来的右侧兄弟结点 * 下面来考虑一种与前面所述有着本质区别的实现树的途径 目的在于存储一系列结点的值,其中包含了尽可能少但对于重建树结构必不可少的信息 这种方法称为顺序树表示法 --- 【讲完树的顺序表示法内容后,再给特点总结】 优点:节省空间,因为无须存储指针 缺点:对任何结点的存储,都必

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档