- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第 查找B
上节课内容回顾 8.2 静态查找表 8.3 动态查找表 1、二叉排序树的定义回顾 2、二叉排序树的插入与删除 讨论1:二叉排序树的插入和查找操作 3.二叉排序树的查找分析 最好情况:即:与折半查找中的判定树相同(形态比较均衡) 二 平衡二叉树( AVL树) 什么是平衡二叉树(Balanced Binary Tree) ? 平衡二叉树是空树,或者是具有以下性质的二叉树: 它的左子树和右子树也都是平衡二叉树并且 左子树和右子树的深度之差的绝对值不超过1 结点的平衡因子BF (Balance Factor)是 左子树的深度减去右子树的深度,它只可能是 -1, 0, 1 平衡二叉树(也称AVL树)的深度为O(log2N) (其中N为结点个数) 它的平均查找长度也是O(log2N) 平衡二叉树及平衡因子举例 不平衡二叉树及平衡因子举例 二叉排序树转成平衡树失去平衡后需要进行调整的四种情况 (1) 单向右旋平衡处理LL 当在左子树上插入左结点,使平衡因子由1增至2时 (2) 单向左旋平衡处理RR 当在右子树上插入右结点,使平衡因子由-1增至-2时 (3) 双向旋转(先左后右)平衡处理LR 当在左子树上插入右结点,使平衡因子由1增至2时 (4) 双向旋转(先右后左)平衡处理RL 当在右子树上插入左结点,使平衡因子由-1增至-2时 二叉排序树转成平衡树示例设关键字序列为(13,24,37,90,53) 平衡树以二叉链表作为存储结构,每个结点还要增加一个平衡因子域。 平衡树的查找运算与普通树型查找完全相同,由于平衡树附加了平衡条件,其高度与结点数相同的完全树属于同一数量级,所以有较快的查找速度。 在插入新结点时,当确定了新结点应插入的位置后,需向上寻找有关平衡因子变为+2或-2的祖先,如有这种结点,则取其中层数居最低者,根据不同的情况进行单旋转或双旋转,使整个树仍然符合平衡树的条件,每次插入结点后,还需对有关祖先的平衡因子加以修改。 平衡二叉排序树编程实现注意事项 R_Rotate(BSTree p) 右旋操作 L_Rotate(BSTree p) 左旋操作 LeftBalance(BSTree p) 左平衡旋转处理 RightBalance(BSTree p)右平衡旋转处理 严书上 P236~238的函数说明: * 数据结构 计算机与信息学院 刘勇 有七个人曾经住在一起,每天分一大桶粥。要命的是,粥每天都是不够的。一开始,他们抓阄决定谁来分粥,每天轮一个。于是乎每周下来,他们只有一天是饱的,就是自己分粥的那一天。后来他们开始推选出一个道德高尚的人出来分粥。强权就会产生腐败,大家开始挖空心思去讨好他,贿赂他,搞得整个小团体乌烟瘴气。然后大家开始组成三人的分粥委员会及四人的评选委员会,互相攻击扯皮下来,粥吃到嘴里全是凉的。最后想出来一个方法:轮流分粥,但分粥的人要等其它人都挑完后拿剩下的最后一碗。为了不让自己吃到最少的,每人都尽量分得平均,就算不平,也只能认了。大家快快乐乐,和和气气,日子越过越好。同样是七个人,不同的分配制度,就会有不同的风气。所以一个单位如果有不好的工作习气,一定是机制问题,一定是没有完全公平公正公开,没有严格的奖勤罚懒。如何制订这样一个制度,是每个领导需要考虑的问题。 每课一贴 1. 查找基本知识 基本概念:查找表、查找、静态查找、动态查找、关键字、主关键字、次关键字 查找过程: 在含有n个记录的文件中进行搜索,寻找一个关键字值等于K的记录 查找表常用的操作: 查找、插入、删除 查找方法的优劣如何评估: 平均查找长度ASL 针对静态查找表的查找算法主要有: 一、顺序查找(线性查找) 二、折半查找(二分或对分查找) 三、静态树表的查找 四、分块查找(索引顺序查找) ASL 最大 最小 两者之间 表结构 有序表、无序表 有序表 分块有序表 存储结构 顺序存储结构 线性链表 顺序存储结构 顺序存储结构 线性链表 三种静态查找方法比较 顺序查找 折半查找 分块查找 小结: 针对动态查找表的查找算法主要有: 一、二叉排序树(BST) 二、平衡二叉树(AVL树) 三、 B- 、 B+树 ----或是一棵空树;或者是具有如下性质的非空二叉树: (1)左子树的所有结点均小于根的值; (2)右子树的所有结点均大于根的值; (3)它的左右子树也分别为二叉排序树。递归定义 (4)其中序遍历序列为一个递增序列 一. 二叉排序树搜索 将数据元素构造成二叉排序树的优点: ① 查找过程与顺序结构有序表中的折半查找相似,查找效率高; ② 如果查找不成功,能够方便地将被查元素插入到二叉树的叶子结点上,而且插入或删除时只需修改指针而不需移动元素。 注:若数据元素的输入顺序不同,
文档评论(0)