数据结构 9查找B概要1.ppt

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

第9章 查找 9.2 动态查找表 四、平衡二叉树 例:请将下面序列构成一棵平衡二叉排序树: ( 13,24,37,90,53) 1)LL平衡旋转: 3)LR平衡旋转: 1 Status InsertAVL(T, e, t) { … 5 if (!T) {…;T??bf=EH; t=1;} //当前树空 9 else {//当前树根就是要找的 if (e.key == T??data.key) {t=0; return 0;} 12 if (e.key = T??data.key) { //进入左子树 13 if (!InsertAVL(T??lchild, e, t)) return 0; 14 if (t) 16 LH: LeftBalance(T); t=0; …} else { //进入右子树 25 if (!InsertAVL(T??rchild, e, t)) return 0; 26 if (t) 28 LH: T??bf=EH; t=0; 30 EH: T??bf=RH; t=1; 32 RH: RightBalance(T); t=0; } … 37 return 1; } * 基本概念 9.1 静态查找表 9.2 动态查找表 9.3 哈希查找表 教材第8、11和12章省略,因《操作系统》课程会涉及。 特点: 一、二叉排序树的定义 二、二叉排序树的插入与删除 三、二叉排序树的查找分析 四、平衡二叉树 五、B-树和B+树 表结构在查找过程中动态生成。 要求: 对于给定值key, 若表中存在其关键字等于key的记录,则查找成功返回; 否则插入关键字等于key 的记录。 典型的动态表———二叉排序树 平衡二叉树又称AVL树,它是具有如下性质的 二叉树: 为了方便起见,给每个结点附加一个数字,给 出该结点左子树与右子树的高度差。这个数字 称为结点的平衡因子balance。这样,可以得到 AVL树的其它性质: 即|左子树深度-右子树深度|≤ 1 左、右子树是平衡二叉树; 所有结点的左、右子树深度之差的绝对值≤ 1 (a) 平衡树 (b) 不平衡树 例:判断下列二叉树是否AVL树? 任一结点的平衡因子只能取:-1、0 或 1;如果树中任意一个结点的平衡因子的绝对值大于1,则这棵二叉树就失去平衡,不再是AVL树; 对于一棵有n个结点的AVL树,其高度保持在O(log2n)数量级,ASL也保持在O(log2n)量级。 0 0 0 1 1 -1 -1 2 0 0 0 1 -1 如果在一棵AVL树中插入一个新结点,就有可能造成失衡,此时必须重新调整树的结构,使之恢复平衡。我们称调整平衡过程为平衡处理。 现分别介绍这四种平衡处理。 平衡处理可以归纳为四类: LL平衡处理 RR平衡处理 LR平衡处理 RL平衡处理 0 13 0 37 0 24 0 13 0 37 -1 13 0 24 -1 24 -2 13 需要RR平衡处理 (绕B左旋,B为根) 0 90 -1 24 -1 37 0 53 1 90 -2 37 需要RL平衡旋转 (绕B先右旋后左旋) 0 37 0 90 0 53 0 37 0 90 0 53 若在A的左子树的左子树上插入结点,使A的平衡因子从1增加至2,需要进行一次顺时针旋转。 (以B为旋转轴) A B C A B C 若在A的右子树的右子树上插入结点,使A的平衡因子从-1增加至-2,需要进行一次逆时针旋转。 (以B为旋转轴) 2)RR平衡旋转: A B C A B C 若在A的右子树的左子树上插入结点,使A的平衡因子从-1增加至-2,需要先进行顺时针旋转,再逆时针旋转。 (以插入的结点C为旋转轴) 4)RL平衡旋转: A B C A B C A B C 若在A的左子树的右子树上插入结点,使A的平衡因子从1增加至2,需要先进行逆时针旋转,再顺时针旋转。 (以插入的结点C为旋转轴) A B C A B C A B C 这种调整规则可以保证二叉排序树的次序不变 0 13 0 37 -1 13 -2 13 0 24 -1 24 In~(13, 37, 0) 25 In~(24, 37, 0); 26/32 RightBalance(13); t=1; 37 return 1; In~(24, 37, 0) 25 In~(Null, 37, 0); 26/30 T=24;RH; t=1; 37 return 1; p rc 五、B-树 1.定义 2.查找过程 3.插入操作 4.删除操作 5.查找性能的分析 1.B-树的定义 B-树是一种 平衡

文档评论(0)

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

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

1亿VIP精品文档

相关文档