二叉排序树and哈希查找.ppt课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《二叉排序树and哈希查找.ppt课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉排序树 and 查找 ppt 课件
- 资源描述:
-
1、2022-8-10动态查找表动态查找表 动态查找表的特点:表结构本身是在查找过程动态查找表的特点:表结构本身是在查找过程中动态生成的,即对于给定值中动态生成的,即对于给定值key,若表中存在其,若表中存在其关键字等于关键字等于key的纪录,则返回查找成功,否则插的纪录,则返回查找成功,否则插入关键字等于入关键字等于key的纪录。的纪录。本节主要介绍二叉排序树和平衡二叉树的有关本节主要介绍二叉排序树和平衡二叉树的有关概念和查找分析概念和查找分析2022-8-10 定义:二叉排序树或是一棵空树,或是具有下列性质定义:二叉排序树或是一棵空树,或是具有下列性质的二叉树:的二叉树:若它的左子树不空,则左
2、子树上所有结点的值均若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值小于它的根结点的值 若它的右子树不空,则右子树上所有结点的值均若它的右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值大于或等于它的根结点的值 它的左、右子树也分别为二叉排序树它的左、右子树也分别为二叉排序树 二叉排序树的插入二叉排序树的插入 插入原则:若二叉排序树为空,则插入结点应为插入原则:若二叉排序树为空,则插入结点应为新的根结点;否则,继续在其左、右子树上查找,新的根结点;否则,继续在其左、右子树上查找,直至某个结点的左子树或右子树为空为止,插入直至某个结点的左子树或右子树为空为止,插入结点应为该
3、结点的左孩子或右孩子结点应为该结点的左孩子或右孩子 二叉排序树生成:从空树出发,经过一系列的查二叉排序树生成:从空树出发,经过一系列的查找、插入操作之后,可生成一棵二叉排序树找、插入操作之后,可生成一棵二叉排序树2022-8-10 插入算法插入算法例例 10,18,3,8,12,2,7,310101810183101838101838 12101838 122101838 1227101838 12273中序遍历二叉排序树可得到一个关键字的有序序列中序遍历二叉排序树可得到一个关键字的有序序列2022-8-10 二叉排序树的删除二叉排序树的删除要删除二叉排序树中的要删除二叉排序树中的p结点,分三
4、种情况:结点,分三种情况:第一种情况:第一种情况:p为叶子结点,只需修改为叶子结点,只需修改p双亲双亲f的指针的指针 f-lchild=NULL f-rchild=NULL 见图见图(1)(2)2022-8-10SQPLP中序遍历:中序遍历:Q S PL PSQP中序遍历:中序遍历:Q S PL(2)SPPLQ中序遍历:中序遍历:PL P S QSPQ中序遍历:中序遍历:PL S Q(1)2022-8-10第二种情况第二种情况:p只有左子树或右子树只有左子树或右子树 p只有左子树,用只有左子树,用p的左孩子代替的左孩子代替p p只有右子树,用只有右子树,用p的右孩子代替的右孩子代替p 情况见图
5、情况见图(3)(4)2022-8-10SQPLP中序遍历:中序遍历:Q S PL PSQPL中序遍历:中序遍历:Q S PL(2)SPPLQ中序遍历:中序遍历:PL P S QSPLQ中序遍历:中序遍历:PL S Q(1)2022-8-10中序遍历:中序遍历:P PR S QSPRQ中序遍历:中序遍历:PR S Q(3)SPPRQ中序遍历:中序遍历:Q S P PRSQPR中序遍历:中序遍历:Q S PR(4)SQPRP2022-8-10第三种情况:第三种情况:p左、右子树均非空左、右子树均非空 沿沿p左子树的根左子树的根C的右子树分支找到的右子树分支找到S,S的右子树为空,将的右子树为空,将
6、S的左子树成为的左子树成为S的双的双亲亲Q的右子树,用的右子树,用S取代取代p (5)若若C无右子树,用无右子树,用C取代取代p (6)2022-8-10FPCPRCLQQLSSL中序遍历:中序遍历:CL C QL Q SL S P PR FFSCPRCLQQLSL中序遍历:中序遍历:CL C QL Q SL S PR F(5)FPCPRCL中序遍历:中序遍历:CL C P PR FFCPRCL中序遍历:中序遍历:CL C PR F(6)2022-8-10 删除算法删除算法例例805012060110150557053删除删除508060120110150557053删除删除608055120
7、11015053701042581354删除删除1084255134删除删除58425413二叉排序树的查找分析二叉排序树的查找分析在二叉树上查找一个关键字的过程,恰是走了一在二叉树上查找一个关键字的过程,恰是走了一条从根节点到该节点的路径,因此与给定值比较的条从根节点到该节点的路径,因此与给定值比较的次数不超过树的深度。次数不超过树的深度。对相同数的集合构成的二叉排序树因为根节点不对相同数的集合构成的二叉排序树因为根节点不同而造成平均查找长度不同。同而造成平均查找长度不同。452453371293ASL=(1+2*2+3*3)/6=14/6122437455393ASL=(1+2+3+4+5
8、+6)/6=21/62022-8-10含有含有n个节点的二叉排序树的平均查找长度和树的形个节点的二叉排序树的平均查找长度和树的形态有关。态有关。若插入的关键字有序时,构成的二叉排序树蜕变成单若插入的关键字有序时,构成的二叉排序树蜕变成单支树,其平均查找长度为支树,其平均查找长度为(n+1)/2。最好的情况为二叉排序树的形态和折半查找的判定树最好的情况为二叉排序树的形态和折半查找的判定树相同,其平均查找长度和相同,其平均查找长度和log2n成正比。成正比。要想使任何的关键字的集合构成的二叉排序树的平均要想使任何的关键字的集合构成的二叉排序树的平均查找长度均达到查找长度均达到log2n数量级,需对
9、二叉排序树进行数量级,需对二叉排序树进行“平衡化平衡化”处理,成为平衡二叉树。处理,成为平衡二叉树。2022-8-10 平衡二叉树或者是一棵空树,或者具有以下性质:平衡二叉树或者是一棵空树,或者具有以下性质:左子树和右子树的深度之差的绝对值不超过左子树和右子树的深度之差的绝对值不超过1;它的左子树和右子树又分别是平衡二叉树。它的左子树和右子树又分别是平衡二叉树。二叉树节点的平衡因子二叉树节点的平衡因子BF:该节点的左子树深度减去:该节点的左子树深度减去右子树的深度。右子树的深度。BFBalance Factor所以平衡二叉树的平衡因子只可能为所以平衡二叉树的平衡因子只可能为-1,0,1。否则不
10、。否则不能成为平衡二叉树。能成为平衡二叉树。2022-8-10下面举例说明构成平衡二叉树的过程下面举例说明构成平衡二叉树的过程:有关键字序列(有关键字序列(13,24,37,90,53),生成平衡二),生成平衡二叉树:叉树:空空(a)013024-113037-124-2130370240132022-8-10-137-124013090(1)(2)-237-224013190053-237-224013-153090(3)053-124013090037(4)2022-8-10若插入结点使平衡二叉树失去平衡的最小子树根结点指针为若插入结点使平衡二叉树失去平衡的最小子树根结点指针为a,则则:由
11、于在由于在*a的左子树根节点的左子树上插入接点,的左子树根节点的左子树上插入接点,*a的平衡因子的平衡因子 由由1增到增到2,致使以,致使以*a为根的子树失去平衡,则需要进行一次向右为根的子树失去平衡,则需要进行一次向右 的顺时针旋转操作。的顺时针旋转操作。(LL型型)由于在由于在*a的右子树根节点的右子树上插入接点,的右子树根节点的右子树上插入接点,*a的平衡因子的平衡因子 由由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行一次向左为根的子树失去平衡,需要进行一次向左 的逆时针旋转操作。的逆时针旋转操作。(RR型型)由于在由于在*a的左子树根节点的右子树上插入接点,的左子树
12、根节点的右子树上插入接点,*a的平衡因子的平衡因子 由由1变为变为2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转操为根的子树失去平衡,需要进行两次旋转操 作(先左后右)。作(先左后右)。(LR型型)由于在由于在*a的右子树根节点的左子树上插入接点,的右子树根节点的左子树上插入接点,*a的平衡因子的平衡因子 由由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转为根的子树失去平衡,需要进行两次旋转 操作(先右后左)。操作(先右后左)。(RL型型)调整的原则:一是满足平衡二叉树的要求;调整的原则:一是满足平衡二叉树的要求;二是保持排序二叉树的性质二是保持排序二叉树
13、的性质2022-8-10 (1)LL型调整型调整由于在由于在*a的左子树根节点的左子树上插入接点,的左子树根节点的左子树上插入接点,*a的平衡因子的平衡因子由由1增到增到2,致使以,致使以*a为根的子树失去平衡,则需要进行一次向为根的子树失去平衡,则需要进行一次向右的顺时针旋转操作。右的顺时针旋转操作。(LL型型)LL型调整规则型调整规则将将A的左子树的左子树B提升为新二叉树的根;原来的根提升为新二叉树的根;原来的根A连同其右子连同其右子树树向右下旋转成为向右下旋转成为B的右子树;的右子树;B的原右子树的原右子树作为作为A的左的左子树。子树。2022-8-10 (2)RR型调整型调整由于在由于
14、在*a的右子树根节点的右子树上插入接点,的右子树根节点的右子树上插入接点,*a的平衡因子的平衡因子由由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行一次向为根的子树失去平衡,需要进行一次向左的逆时针旋转操作。左的逆时针旋转操作。(RR型型)RR型调整规则:型调整规则:将将A的右子树的右子树B提升为新二叉树的根;原来的根提升为新二叉树的根;原来的根A连同其左子树连同其左子树向左下旋转成为向左下旋转成为B的左子树;的左子树;B的原左子树作为的原左子树作为A的右子树。的右子树。2022-8-10 (3)LR型调整型调整由于在由于在*a的左子树根节点的右子树上插入接点,的左子树根节点
15、的右子树上插入接点,*a的平衡因子的平衡因子 由由1变为变为2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转操作为根的子树失去平衡,需要进行两次旋转操作(先左后右)。(先左后右)。(LR型型)LRLR型调整规则:型调整规则:设设C C为为A A的左子女的右子女,将的左子女的右子女,将A A的孙子结点的孙子结点C C提升为新二叉树的根;原提升为新二叉树的根;原C C的父结点的父结点B B连同其左子树连同其左子树向左下旋转成为新根向左下旋转成为新根C C的左子树,原的左子树,原C C的左的左子树子树成为成为B B的右子树;原根的右子树;原根A A连同其右子树连同其右子树向右下旋转成为新根
16、向右下旋转成为新根C C的右子树,原的右子树,原C C的右子树的右子树成为成为A A的左子树。的左子树。2022-8-10 (4)RL型调整型调整由于在由于在*a的右子树根节点的左子树上插入接点,的右子树根节点的左子树上插入接点,*a的平衡因子由的平衡因子由-1变为变为-2,致使以,致使以*a为根的子树失去平衡,需要进行两次旋转操作为根的子树失去平衡,需要进行两次旋转操作(先右后左)。(先右后左)。(RL型型)RLRL型调整规则:型调整规则:设设C C为为A A的右子女的左子女,将的右子女的左子女,将A A的孙子结点的孙子结点C C提升为新二叉树的根,提升为新二叉树的根,原来原来C C的父结点
17、的父结点B B连同其右子树连同其右子树向右下旋转成为新根向右下旋转成为新根C C的右子树,的右子树,C C的原右子树的原右子树成为成为B B的左子树;原来的根的左子树;原来的根A A连同其左子树连同其左子树向左下旋向左下旋转成为新根转成为新根C C的左子树,原来的左子树,原来C C的左子树的左子树成为成为A A的右子树。的右子树。2022-8-10如:如:输入关键字序列输入关键字序列16,3,7,11,9,26,18,14,15,给出构给出构造一棵造一棵AVL树的步骤。树的步骤。16 0(a)插插入入 16 16 1(b)插插入入 3 3 0 16 2(c)插插入入 7 3-1 7 0 7 0
18、(d)LR 调调整整 3 0 16 0 7-1(e)插插入入 11 3 0 16 1 11 0 7-2(f)插插入入 9 3 0 16 2 11 1 9 0 7-1(g)LL 调调整整 3 0 11 0 9 0 16 0 7-2 3 0 11-1 9 0 16-1(h)插插入入 26 26 0 7 0 3 0 11 0 9 0 16-1 26 0(i)RR 调调整整 2022-8-10 7 0 3 0 11-1 9 0 16-2 26 1(j)插入插入 18 18 0 7 0 3 0 11 0 9 0 18 0 26 0(k)RL 调整调整 16 0 7 0 3 0 11-1 9 0 18 1
19、 26 0 16 1(l)插入插入 14 14 0 7 0 3 0 11-2 9 0 18 2 26 0 16 2(m)插入插入 15 14-1 15 0 7 0 3 0 11-1 9 0 18 1 26 0 15 0 0 14 16 0(n)LR 调整调整 2022-8-10哈希查找哈希查找Hash查找查找 基本思想:在记录的存储地址和它的关键字之间基本思想:在记录的存储地址和它的关键字之间建立一个确定的对应关系;这样,不经过比较,建立一个确定的对应关系;这样,不经过比较,一次存取就能得到所查元素的查找方法一次存取就能得到所查元素的查找方法 定义定义 哈希函数哈希函数记录的关键字与记录的存储
20、地址之间建记录的关键字与记录的存储地址之间建立的一种对应关系立的一种对应关系 哈希函数是一种映象,是从关键字空间到存储地哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象址空间的一种映象 哈希函数可写成:哈希函数可写成:addr(ai)=H(ki)ai是表中的一个元素是表中的一个元素 addr(ai)是是ai的存储地址的存储地址 ki是是ai的关键字的关键字存储地址存储地址集合集合hash2022-8-10 哈希表哈希表应用哈希函数,由记录的关键字确定记录应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址。该表叫在表中的地址,并将记录放入此地址。该表叫 哈希查找哈希查
展开阅读全文