[工学]《数据结构》课件ds-07.ppt

  1. 1、本文档共156页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]《数据结构》课件ds-07

* 从伸展树中删除一个结点的操作也与二叉搜索树相同,但需要把被删结点的父结点展开到根结点。 伸展树与AVL树在操作上稍有不同。伸展树的调整与结点被访问(包括搜索、插入、删除)的频率有关,能够进行更合理的调整。而AVL树的结构调整只与插入、删除的顺序有关,与访问的频率无关。 * 红黑树(Red-Black Tree) 红黑树是一棵二叉搜索树:树中的每一个结点的颜色不是黑色就是红色。可以把一棵红黑树视为一棵扩充二叉树,用外部结点表示空指针。其特性描述如下: 特性1:根结点和所有外部结点的颜色是黑色。 特性2:从根结点到外部结点的途中没有连续两个结点的颜色是红色。 特性3:所有从根到外部结点的路径上都有相同数目的黑色结点。 * 从红黑树中任一结点 x 出发(不包括结点 x ),到达一个外部结点的任一路径上的黑结点个数叫做结点 x 的黑高度,称为结点的阶(rank),记作 bh(x)。红黑树的黑高度定义为其根结点的黑高度。 50 10 30 20 40 60 70 20 50 红色结点 黑色结点 外部结点 * 另一种等价的定义是看结点指针的颜色。 从父结点到黑色子女结点的指针为黑色的,从父结点到红色子女结点的指针为红色的。 50 10 30 20 40 60 70 * 特性1:从内部结点指向外部结点的指针是黑色的。 特性2:从根结点到外部结点的途中没有两个连续的红色指针。 特性3:所有根到外部结点的路径上都有相同数目的黑色指针。 如果知道指针的颜色,就能推断结点的颜色,反之亦然。 设从根到外部结点的路径长度 (Path Length, PL) 为该路径上指针的个数, * 结论1 如果P与Q是红黑树中的两条从根到外部结点的路径,则有: PL(P)≤2PL(Q) 证明:考查任意一棵红黑树。假设根结点的黑高度bh(root) = r。由特性1‘可知,每条从根结点到外部结点的路径中最后一个指针为黑色;从特性2’可知,不存在有连续两个红色指针的路径。因此,每个红色指针后面都会跟随一个黑色指针,每条从根到外部结点的路径上都有r~2r个指针,综上所述有 PL(P)≤2PL(Q)。 * 如上图,从根到 40 左下的外部结点的路径长度PL(40) = 4,从根到70右下的外部结点的路径长度PL(70) = 3,因此PL(40)≤PL(70)或者PL(70)≤PL(40)。 50 10 30 20 40 60 70 PL=4, bh=2 PL=3, bh=2 * 结论2 设 h 是一棵红黑树的高度( 不包括外部结点),n 是树中内部结点的个数,r 是根结点的黑高度,则以下关系式成立: (1) h≤2r (2) n≥2r-1 (3) h≤2log2(n+1) 证明: (1) 从结论1的证明可知,从根到任一外部结点的路径长度不超过2r,同时从树的定义可知,树的高度即为根结点的高度,等于从根到离根最远的外部结点的路径的长度,有h≤2r。 * (2) 因为红黑树的黑高度为r,则从树的第 1 层到第 r 层没有外部结点,在这些层中有2r-1个内部结点,即内部结点的总数至少为2r-1。 (3) 由(2)可得r≤log2(n+1),结合(1),有 h≤2log2(n+1)。 由于红黑树的高度最大为2log2(n+1),所以搜索、插入、删除操作的时间复杂性为O(log2n)。注意,最差情况下的红黑树的高度大于最差情况下具有相同结点个数的AVL树的高度(近似于1.44*log2(n+2))。 * 红黑树的搜索 由于每一棵红黑树都是二叉搜索树,可以使用二叉搜索树的算法进行搜索。在搜索过程中不需使用颜色信息。 对普通二叉搜索树进行搜索的时间复杂性为O(h),对于红黑树则为O(log2n)。因为在搜索二叉搜索树、AVL树和红黑树时使用了相同算法。在最差情况下AVL树的高度最小,因此,在那些以搜索操作为主的应用程序中,最差情况下AVL树能获得最优时间复杂性。 * 红黑树的插入 首先使用二叉搜索树的插入算法将一个元素插入到红黑树中,该元素将作为新的叶结点插入。在插入过程中需要为新元素染色。 如果插入前是空树,则那么新元素将成为根结点,根据特征1,根结点必须染成黑色。 Ф * 如果插入前树非空,若新结点被染成黑色,将违反红黑树的特性3,所有从根到外部结点的路径上的黑色结点个数不等。因此,新插入的结点将染成红色,但这又可能违反红黑树的特性2,出现连续两个红色结点,因此需要重新平衡。 gu uL 插入 ╳ * 设新插入的结点为u,它的父结点和祖父结点分别是pu和gu,现在来考查不平衡的类型。若pu是黑色结点,则特性2没有破坏,结束重新平衡的过程。若pu是红色结点,则出现连续两个红色结点的情形,这时还要考查pu的兄弟结

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档