高度平衡的二叉树课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《高度平衡的二叉树课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高度 平衡 二叉 课件
- 资源描述:
-
1、高度平衡的二叉搜索树nAVL(Addison-Velski and Landis )树n伸展树n红黑树 二叉搜索树性能分析二叉搜索树性能分析n对于有对于有 n 个关键码的集合,其关键码有个关键码的集合,其关键码有 n!种种不同排列,可构成不同二叉搜索树有不同排列,可构成不同二叉搜索树有 (棵棵)Cnnn2112,1,3 1,2,3 1,3,2 2,3,1 3,1,2 3,2,1123111132223323n同样同样 3 个数据个数据 1,2,3,输入顺序不同,建立,输入顺序不同,建立起来的二叉搜索树的形态也不同。这直接影响起来的二叉搜索树的形态也不同。这直接影响到二叉搜索树的搜索性能。到二叉
2、搜索树的搜索性能。n如果输入序列选得不好,会建立起一棵单支树,如果输入序列选得不好,会建立起一棵单支树,使得二叉搜索树的高度达到最大。使得二叉搜索树的高度达到最大。n用树的搜索效率来评价这些二叉搜索树。用树的搜索效率来评价这些二叉搜索树。n为此,在二叉搜索树中加入外结点,形成判定为此,在二叉搜索树中加入外结点,形成判定树。外结点表示失败结点,内结点表示搜索树树。外结点表示失败结点,内结点表示搜索树中已有的数据。中已有的数据。n这样的判定树即为这样的判定树即为扩充的二叉搜索树扩充的二叉搜索树。n举例说明。已知关键码集合举例说明。已知关键码集合 a1,a2,a3=do,if,to,对应搜索概率,对
3、应搜索概率p1,p2,p3,在各搜索不成功在各搜索不成功间隔内搜索概率分别为间隔内搜索概率分别为q0,q1,q2,q3。可能的二。可能的二叉搜索树如下所示。叉搜索树如下所示。doiftodoiftoq0q1p1q2p2q3p3q0q1q2q3p1p2p3(a)(b)判定树判定树doiftoq0q1p1q2p2q3p3doiftoq0q1p1q2p2q3p3(d)(c)doiftoq0q1p1q2p2q3p3(e).*i lipASLnisucc1n在判定树中在判定树中u 表示表示内部结点内部结点,包含了关键码集合中的,包含了关键码集合中的某一个关键码;某一个关键码;u 表示表示外部结点外部结点
4、,代表各关键码间隔中的,代表各关键码间隔中的不在关键码集合中的关键码。不在关键码集合中的关键码。n在每两个外部结点间必存在一个内部结点在每两个外部结点间必存在一个内部结点。n一棵判定树上的搜索成功的平均搜索长度一棵判定树上的搜索成功的平均搜索长度ASLsucc可以定义为该树所有内部结点上的搜可以定义为该树所有内部结点上的搜索概率索概率pi与搜索该结点时所需的关键码比较与搜索该结点时所需的关键码比较次数次数ci(=li,即结点所在层次即结点所在层次)乘积之和:乘积之和:n设各关键码的搜索概率相等:设各关键码的搜索概率相等:pi=1/nn搜索不成功的平均搜索长度搜索不成功的平均搜索长度ASLuns
5、ucc为树中所为树中所有外部结点上搜索概率有外部结点上搜索概率qj与到达外部结点所与到达外部结点所需关键码比较次数需关键码比较次数cj(=lj)乘积之和:乘积之和:n设外部结点搜索概率相等:设外部结点搜索概率相等:qj=1/(n+1):.nisucci lnASL11njunsuccjljqASL0).1 (*njunsuccjlnASL0(11).1n设树中所有内、外部结点的搜索概率都相等:设树中所有内、外部结点的搜索概率都相等:pi=1/3,1i3,qj=1/4,0 j3 图图(a):ASLsucc=1/3*3+1/3*2+1/3*1=6/3,ASLunsucc=1/4*3*2+1/4*2
6、+1/4*1=9/4。图图(b):ASLsucc=1/3*2*2+1/3*1=5/3,ASLunsucc=1/4*2*4=8/4。图图(c):ASLsucc=1/3*1+1/3*2+1/3*3=6/3,ASLunsucc=1/4*1+1/4*2+1/4*3*2=9/4。图图(d):ASLsucc=1/3*2+1/3*3+1/3*1=6/3,ASLunsucc=1/4*2+1/4*3*2+1/4*1=9/4。(1)相等搜索概率的情形相等搜索概率的情形图图(e):ASLsucc=1/3*1+1/3*3+1/3*2=6/3,ASLunsucc=1/4*1+1/4*3*2+1/4*2=9/4。n图图(
7、b)的情形所得的平均搜索长度最小。的情形所得的平均搜索长度最小。n设二叉搜索树中所有内、外部结点的搜索概率设二叉搜索树中所有内、外部结点的搜索概率互不相等。互不相等。p1=0.5,p2=0.1,p3=0.05 q0=0.15,q1=0.1,q2=0.05,q3=0.05n分别计算各个可能的扩充二叉搜索树的搜索性分别计算各个可能的扩充二叉搜索树的搜索性能,判断哪些扩充二叉搜索树的平均搜索长度能,判断哪些扩充二叉搜索树的平均搜索长度最小。最小。(2)不相等搜索概率的情形不相等搜索概率的情形doiftodoiftoq0=0.15q1=0.1p1=0.5q2=0.05p2=0.1q3=0.05p3=0
8、.05q0=0.15 q1=0.1 q2=0.05q3=0.05p1=0.5p2=0.1p3=0.05(a)(b)图图(a):ASLsucc=0.5*3+0.1*2+0.05*1=1.75,ASLunsucc=0.15*3+0.1*3+0.05*2+0.05*1=0.9。图图(b):ASLsucc=0.5*2+0.1*1+0.05*2=1.2,ASLunsucc=(0.15+0.1+0.05+0.05)*2=0.7。doifto q0=0.15q1=0.1p1=0.5q2=0.05p2=0.1q3=0.05p3=0.05doiftoq0=0.15q1=0.1p1=0.5q2=0.05p2=0.
9、1q3=0.05p3=0.05(d)(c)图图(c):ASLsucc=0.5*1+0.1*2+0.05*3=0.85,ASLunsucc=0.15*1+0.1*2+0.05*3+0.05*3 =0.75.图图(d):ASLsucc=0.5*2+0.1*3+0.05*1=1.35,ASLunsucc=0.15*2+0.1*3+0.05*3+0.05*1=0.8n由此可知,图由此可知,图(c)和图和图(e)的情形下树的平均搜索的情形下树的平均搜索长度达到最小,因此,图长度达到最小,因此,图(c)和图和图(e)的情形是最的情形是最优二叉搜索树。优二叉搜索树。doiftoq0=0.15q1=0.1p1
10、=0.5q2=0.05p2=0.1q3=0.05p3=0.05(e)图图(e):ASLsucc=0.5*1+0.1*3+0.05*2=0.9;ASLunsucc=0.15*1+0.1*3+0.05*3+0.05*2=0.7;n一般把平均搜索长度达到最小的扩充的一般把平均搜索长度达到最小的扩充的二叉搜索树称作最优二叉搜索树。二叉搜索树称作最优二叉搜索树。n等概率条件下,最优二叉搜索树的最短等概率条件下,最优二叉搜索树的最短内部路径长度与最短外部路径长度内部路径长度与最短外部路径长度,课本课本383页页:.1112log2nniiE.niiI12log 一、什么是平衡二叉树 二、失衡二叉排序树的分
11、析与调整 平衡二叉树又称为平衡二叉树又称为AVL树。树。左子树与右子树的高度之差的绝对值小于等于左子树与右子树的高度之差的绝对值小于等于1;左子树和右子树也是平衡二叉排序树。左子树和右子树也是平衡二叉排序树。例:平衡二叉树40247053452860 引入平衡二叉树的目的是为了提高查找效率,引入平衡二叉树的目的是为了提高查找效率,使使其平均查找长度为其平均查找长度为O(log2n)。402470532860 根据平衡二叉树的定义,根据平衡二叉树的定义,平衡二叉树上所有结点平衡二叉树上所有结点的平衡因子只能是的平衡因子只能是-1、0,或,或1。当我们在一个平衡二。当我们在一个平衡二叉排序树上插入
12、一个结点时,有可能导致失衡,即出叉排序树上插入一个结点时,有可能导致失衡,即出现绝对值大于现绝对值大于1的平衡因子,如的平衡因子,如2、-2。为了方便起见,给每个结点附加一个为了方便起见,给每个结点附加一个,给出,给出。这个数字称为结点的。这个数字称为结点的40247053452860402470532860例:下图对平衡二叉树和失去平衡的二叉排序树分别下图对平衡二叉树和失去平衡的二叉排序树分别标注了平衡因子。标注了平衡因子。一、什么是平衡二叉树 二、失衡二叉排序树的分析与调整 如果在一棵如果在一棵AVL树中插入一个新结点,就有可能造树中插入一个新结点,就有可能造成失衡,此时必须成失衡,此时必
13、须,使之恢复平衡。,使之恢复平衡。我们称调整平衡过程为我们称调整平衡过程为。现分别介绍这四种平衡旋转。现分别介绍这四种平衡旋转。v LL平衡旋转平衡旋转v RR平衡旋转平衡旋转v LR平衡旋转平衡旋转v RL平衡旋转平衡旋转 若在若在A A的的结点,使结点,使A A的平的平衡因子从衡因子从1 1增加至增加至2 2,需要进行一次,需要进行一次。1)LL平衡旋转:平衡旋转:hhhACEBD(a)(b)(c)hh+1BACEDhhh+1CEABDh 左改组(新插入结点出现在危机结点的左子树上进行的调整)左改组(新插入结点出现在危机结点的左子树上进行的调整)的情况分析:的情况分析:1、LL 情况:(情
14、况:(LL:表示新插入结点在危机结点的:表示新插入结点在危机结点的 左子树左子树的的左子树上左子树上)AB+1h-10+2+1hh-1h-1LL 改组改组BLBRARBA0h0h-1h-1BLBRAR危机结点危机结点改组前:高度为改组前:高度为 h+1 中序序列:中序序列:ABBLBRAR改组后:高度为改组后:高度为 h+1 中序序列:中序序列:ABBLBRAR注意:改组后注意:改组后 平衡度为平衡度为 0AB 若在若在A A的的结点,使结点,使A A的平衡的平衡因子从因子从-1-1增加至增加至-2-2,需要进行一次,需要进行一次。hhhACEBD(a)(b)(c)hhh+1BACEDhhh+
15、1CEABD 若在若在A A的的结点,使结点,使A A的平的平衡因子从衡因子从1 1增加至增加至2 2,需要,需要,。3)LR平衡旋转:平衡旋转:2、LR 情况:(情况:(LR:表示新插入结点在危机结点的:表示新插入结点在危机结点的 左子树左子树的的右子树上右子树上)情况情况A:AB+1h-10+2-1h-1LR 改组改组BLAR危机结点危机结点改组前:改组前:高度为高度为 h+1 中序序列:中序序列:注意:改组后注意:改组后 平衡度为平衡度为 0,0,-1CBCCLCRh-2h-2h-10+1CB0h-1h-1BLARACRh-2CLh-1-10ABBLARCCLCR改组后:改组后:高度为高
16、度为 h+1 中序序列:中序序列:ABBLARCCLCRADouble RotationsFig.28-7(a)The AVL tree in Fig.28-5 after additions that maintain its balance;(b)after an addition that destroys the balance continued Double RotationsFig.28-7(ctd.)(c)after a left rotation;(d)after a right rotation.若在若在A A的的结点,使结点,使A A的平衡因子的平衡因子从从-1-1增加至
17、增加至-2-2,需要,需要,。综上所述,综上所述,在一个平衡二叉排序树上插入一个新在一个平衡二叉排序树上插入一个新结点结点S S时,主要包括以下三步:时,主要包括以下三步:(1)(1)查找应插位置,同时记录离插入位置最近的可能查找应插位置,同时记录离插入位置最近的可能失衡结点失衡结点A A(A A的平衡因子不等于的平衡因子不等于0 0)。)。(2)(2)插入新结点插入新结点S S,并修改从并修改从A A到到S S路径上各结点的平路径上各结点的平衡因子。衡因子。(3)(3)根据根据A A、B B的平衡因子,的平衡因子,判断是否失衡以及失衡判断是否失衡以及失衡类型,类型,并做相应处理。并做相应处理
18、。Double RotationsFig.28-5(a)Adding 70 to the tree in Fig.28-2c destroys its balance;to restore the balance,perform both(b)a right rotation and(c)a left rotation.0 00 00 0例:例:请将下面序列构成一棵平衡二叉排序树:请将下面序列构成一棵平衡二叉排序树:(13,24,37,90,53)0 00 0-1-10 0-1-1需要需要RR平衡旋平衡旋转转(绕绕B逆转逆转,B为为根)根)0 0-1-1-1-10 01 1需要需要RL平衡平衡
19、旋转旋转(绕绕C先顺先顺后逆)后逆)0 00 00 00 00 00 0n例如,输入关键码序列为例如,输入关键码序列为 16,3,7,11,9,26,18,14,15,插入和调整过程如下。插入和调整过程如下。160163-10731600073110-111637169000111163701273161190-1-223711269160112右左双旋右左双旋0左单旋左单旋181600732611900031609171126183-1-17161426911173918261116151831816731171491615112626149从空树开始的建树过程从空树开始的建树过程各种搜索结
20、构的比较n课本397页 图10.14作业n1、设有关键码序列55,31,11,37,46,73,63,02,07,从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。伸展树(伸展树(Splaying TreeSplaying Tree)n伸展树、伸展树、AVL树、并查集的用双亲表示的树,树、并查集的用双亲表示的树,都属于自调整数据结构(都属于自调整数据结构(self-adjusting data structure)。)。nAVL树使得搜索树保持高度平衡,让叶结点树使得搜索树保持高度平衡,让叶结点只出现在最低的一层或两层上,从而提高其只出现在最低的一层或两层上,从而提高其搜索效率
21、。搜索效率。n伸展树是另一种提高搜索效率的方法,其思伸展树是另一种提高搜索效率的方法,其思路是:路是:1.单一旋转:单一旋转:将经常访问的结点最终上移到将经常访问的结点最终上移到靠近根的地方,使以后的访问更快。靠近根的地方,使以后的访问更快。2.移动到根部:移动到根部:假设正访问的结点将以很高假设正访问的结点将以很高的概率再次被访问,对它反复进行子女的概率再次被访问,对它反复进行子女父结点旋转,直到被访问的结点位于根部父结点旋转,直到被访问的结点位于根部为止。为止。n伸展树提出了一组改进二叉搜索树性能的一伸展树提出了一组改进二叉搜索树性能的一组规则,每当执行搜索、插入、删除等操作组规则,每当执
22、行搜索、插入、删除等操作时,就要依据这些规则调整二叉搜索树,从时,就要依据这些规则调整二叉搜索树,从而保证操作的时间代价。而保证操作的时间代价。n每当访问(搜索、插入或删除)一个结点每当访问(搜索、插入或删除)一个结点 s 时,伸展树就执行一次叫做时,伸展树就执行一次叫做“展开展开(splaying)”的过程,将的过程,将结点结点 s 移到二叉搜索树的根部移到二叉搜索树的根部。n就像就像AVL树,一次树,一次“展开展开”由一组旋转组成。由一组旋转组成。n旋转有三种类型:旋转有三种类型:单旋转单旋转、一字形旋转一字形旋转和和之之字形旋转字形旋转。n一次旋转的目的是通过调整一次旋转的目的是通过调整
23、结点结点 s 与它的与它的父父结点结点 p 和和祖父结点祖父结点 g 之间位置,把它上移到之间位置,把它上移到树的更高层。树的更高层。1.被访问结点被访问结点 s 的父结点的父结点 p 是是根结点根结点。此时执。此时执行行单旋转单旋转。在保持二叉搜索树特性的情况下,。在保持二叉搜索树特性的情况下,结点结点 s 成为新的根,原来的根成为新的根,原来的根 p 成为它的子成为它的子女结点。女结点。2.同构形状(同构形状(homogeneous configuration)。结点结点 s 是其父结点是其父结点 p 的左子女,结点的左子女,结点 p 又是又是其父结点其父结点 g 的左子女的左子女()。或
24、者结点。或者结点 s 是其是其父结点父结点 p 的右子女,结点的右子女,结点 p 又是其父结点又是其父结点g 的右子女的右子女()。此时执行。此时执行一字形旋转一字形旋转(zigzig rotation):p s s p右单旋转n异构的形状(异构的形状(heterogeneous configuration)。结点结点 s 是其父结点是其父结点 p 的左子女,结点的左子女,结点 p 又是其又是其父结点父结点 g 的右子女的右子女()。或结点。或结点 s 是其父结点是其父结点 p 的右子女,结点的右子女,结点 p 又是其父结点又是其父结点 g 的左子女的左子女()。此时执行。此时执行之字形旋转之
25、字形旋转(zigzag rotation)。pg s pg s pg s 右单旋转右单旋转n因为刚访问的因为刚访问的结点结点 s 与其父结点与其父结点 p 和祖父结点和祖父结点g 形成折线形成折线,需要做与,需要做与AVL树一样的树一样的双旋转双旋转,首先围绕首先围绕 s 旋转旋转 p,再围绕,再围绕 s 旋转旋转 g,把结点,把结点 s上升到祖父结点的位置,并保持二叉搜索树的上升到祖父结点的位置,并保持二叉搜索树的特性。特性。pg s pg s sg p 左单旋转右单旋转将刚访问的结点将刚访问的结点s s上移到树根部的算法上移到树根部的算法 splaying(g,p,s)/g 是 p 的父结
展开阅读全文