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

在含 N 个关键字的 B-树上进行一次查找,需访问的结点个数不超过 log?m/2?((N+1)/2)+1 结论: 是B-树的一种变型 四、B+树 二叉平衡树是二叉查找树的另一种形式,其特点为: 树中每个结点的左、右子树深度之差的绝对值不大于1 。 例如: 5 4 8 2 5 4 8 2 1 是平衡树 不是平衡树 结点的平衡因子:该结点的左子树的深度减去 ( -1 0 1 ) 右子树的深度 构造二叉平衡(查找)树的方法是: 在插入过程中,采用平衡旋转技术。 假设由于在二叉排序树上插入结点而 失去平衡的最小子树根结点为A,沿插入 路径取直接下两层的结点为B和C,如果这 三个结点处于一条直线上,则采用单旋转 进行平衡化;如果这三个结点处于一条折线 线上,则采用双旋转进行平衡化。失去平衡 后进行调整的规律可归纳为下列4种情况: 调整方法:以结点B为旋转轴,将结点A向右旋转成为 B的右子树,结点B代替原来A的位置,原来B的右子树 成为A的左子树。 原因:在A 的左子树根结点的左子树上插入结点, A的平衡因子由1增至2,至使以A为根的子树失去平衡。 A B h C h BR h AR 插入结点 (1)单向右旋平衡处理:(LLR) LL R A B h+1 C h BR h AR 调整方法:以结点B为旋转轴,将结点A向左旋转成为 B的左子树,结点B代替原来A的位置,原来B的左子树 成为A的右子树。 原因:在A 的右子树根结点的右子树上插入结点, A的平衡因子由-1增至-2,至使以A为根的子树失去平衡。 A B h C h BL h AL 插入结点 (2)单向左旋平衡处理:(RRL) RR L A B h+1 C h BL h AL 调整方法:先以C为旋转轴,将结点B向左旋转成为 C的左子树,结点C代替原来B的位置,原来C的左子树 成为B的右子树。 原因:在A 的左子树根结点的右子树上插入结点, A的平衡因子由1增至2,至使以A为根的子树失去平衡。 (3)先左后右平衡处理:(LRLR) A B h-1 CL h-1 CR h AR 插入结点 C h BL B A h AR h CL h BL C h-1 CR B A h AR h CL h BL C h-1 CR 再以C为旋转轴,将A向右旋转成为 C的右子树,结点C代替原来A的位置,原来C的右子树 成为B的左子树。 L R 再以C为旋转轴,将A向左旋转成为 C的左子树,结点C代替原来A的位置,原来C的左子树 成为B的右子树。 调整方法:先以C为旋转轴,将结点B向右旋转成为 C的右子树,结点C代替原来B的位置,原来C的右子树 成为B的左子树。 原因:在A 的右子树根结点的左子树上插入结点, A的平衡因子由-1增至-2,至使以A为根的子树失去平衡。 (4)先右后左平衡处理:(RLRL) A B h-1 CR h-1 CL h AL 插入结点 C h BR BR A h AL h CR h B C h-1 CL B A h AL h CR h BR C h-1 CL R L A B C A B C 例如:依次插入的关键字为5, 4, 2, 8, 6, 9 5 4 2 4 2 5 8 6 6 5 8 4 2 向右旋转 一次 先向右旋转 再向左旋转 B C A C B A C B A 4 2 6 5 8 9 6 4 2 8 9 5 向左旋转一次 继续插入关键字 9 C A B 在平衡树上进行查找的过程和二叉排序树相同,因此,查找过程中和给定值进行比较的关键字的个数不超过平衡 树的深度。 平衡树的查找性能分析: 问:含 n 个关键字的二叉平衡树可能达到的最大深度是多少? n = 0 空树 最大深度为 0 n = 1 最大深度为 1 n = 2 最大深度为 2 n = 4 最大深度为 3 n = 7 最大深度为 4 先看几个具体情况: 反过来问,深度为 h 的二叉平衡树中所含结点的最小值 Nh 是多少? h = 0 N0 = 0 h = 1 h = 2 h = 3 一般情况下 N1 = 1 N2 = 2 N3 = 4 Nh = Nh-1 + Nh-2 + 1 利用归纳法可证得 Nh = Fh+2 - 1 因此,在二叉平衡树上进行查找时, 查找过程中和给定值进行比较的关键字的个数和 log(n) 相当。 由此推得,深度为 h 的二叉平衡树中所含结点的最小值 Nh = ?h+2/5 - 1。 反之,含有 n 个结点

文档评论(0)

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

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

1亿VIP精品文档

相关文档