高度平衡的二叉树优秀课件.ppt
《高度平衡的二叉树优秀课件.ppt》由会员分享,可在线阅读,更多相关《高度平衡的二叉树优秀课件.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高度平衡的二叉树第1页,本讲稿共79页 二叉搜索树性能分析二叉搜索树性能分析n对于有对于有 n 个关键码的集合,其关键码有个关键码的集合,其关键码有 n!种不同排种不同排列,可构成不同二叉搜索树有列,可构成不同二叉搜索树有 (棵棵)2,1,3 1,2,3 1,3,2 2,3,1 3,1,2 3,2,1 123111132223323第2页,本讲稿共79页n同样同样 3 个数据个数据 1,2,3,输入顺序不同,建立起来,输入顺序不同,建立起来的二叉搜索树的形态也不同。这直接影响到二叉搜的二叉搜索树的形态也不同。这直接影响到二叉搜索树的搜索性能。索树的搜索性能。n如果输入序列选得不好,会建立起一棵
2、单支树,如果输入序列选得不好,会建立起一棵单支树,使得二叉搜索树的高度达到最大。使得二叉搜索树的高度达到最大。n用树的搜索效率来评价这些二叉搜索树。用树的搜索效率来评价这些二叉搜索树。n为此,在二叉搜索树中加入外结点,形成判定树。为此,在二叉搜索树中加入外结点,形成判定树。外结点表示失败结点,内结点表示搜索树中已有外结点表示失败结点,内结点表示搜索树中已有的数据。的数据。n这样的判定树即为这样的判定树即为扩充的二叉搜索树扩充的二叉搜索树。第3页,本讲稿共79页n举例说明。已知关键码集合举例说明。已知关键码集合 a1,a2,a3=do,if,to,对应搜索概率,对应搜索概率p1,p2,p3,在各
3、搜索不成功间隔内在各搜索不成功间隔内搜索概率分别为搜索概率分别为q0,q1,q2,q3。可能的二叉搜索树如。可能的二叉搜索树如下所示。下所示。doiftodoiftoq0q1p1q2p2q3p3q0q1q2q3p1p2p3(a)(b)第4页,本讲稿共79页判定树判定树doiftoq0q1p1q2p2q3p3doiftoq0q1p1q2p2q3p3(d)(c)doiftoq0q1p1q2p2q3p3(e)第5页,本讲稿共79页n在判定树中在判定树中 表表示示内内部部结结点点,包包含含了了关关键键码码集集合合中中的的某某一一个关键码;个关键码;表表示示外外部部结结点点,代代表表各各关关键键码码间间
4、隔隔中中的的不不在在关关键码集合中的关键码。键码集合中的关键码。n在每两个外部结点间必存在一个内部结点在每两个外部结点间必存在一个内部结点。n一一棵棵判判定定树树上上的的搜搜索索成成功功的的平平均均搜搜索索长长度度ASLsucc可可以以定定义义为为该该树树所所有有内内部部结结点点上上的的搜搜索索概概率率pi与与搜搜索索该该结结点点时时所所需需的的关关键键码码比比较较次次数数ci(=li,即结点所在层次即结点所在层次)乘积之和:乘积之和:第6页,本讲稿共79页n设各关键码的搜索概率相等:设各关键码的搜索概率相等:pi=1/nn搜索不成功的平均搜索长度搜索不成功的平均搜索长度ASLunsucc为树
5、中所有外为树中所有外部结点上搜索概率部结点上搜索概率qj与到达外部结点所需关键码与到达外部结点所需关键码比较次数比较次数cj(=lj)乘积之和:乘积之和:n设外部结点搜索概率相等:设外部结点搜索概率相等:qj=1/(n+1):第7页,本讲稿共79页n设树中所有内、外部结点的搜索概率都相等:设树中所有内、外部结点的搜索概率都相等: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+1/4*1=9/4。图图(b):ASLsucc=1/3*2*2+1/3*1=5/3,ASLunsucc=
6、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)相等搜索概率的情形相等搜索概率的情形第8页,本讲稿共79页图图(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图图(b)的情形所得的平均搜索长度最小。的情形所得的平均搜索长度最小。第9页,本讲稿共79
7、页n设二叉搜索树中所有内、外部结点的搜索概率互设二叉搜索树中所有内、外部结点的搜索概率互不相等。不相等。p1=0.5,p2=0.1,p3=0.05 q0=0.15,q1=0.1,q2=0.05,q3=0.05n分别计算各个可能的扩充二叉搜索树的搜索性分别计算各个可能的扩充二叉搜索树的搜索性能,判断哪些扩充二叉搜索树的平均搜索长度能,判断哪些扩充二叉搜索树的平均搜索长度最小。最小。(2)不相等搜索概率的情形不相等搜索概率的情形第10页,本讲稿共79页doiftodoiftoq0=0.15q1=0.1p1=0.5q2=0.05p2=0.1q3=0.05p3=0.05q0=0.15 q1=0.1 q
8、2=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。第11页,本讲稿共79页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.1q3=0.0
9、5p3=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.8.第12页,本讲稿共79页n由此可知,图由此可知,图(c)和图和图(e)的情形下树的平均搜索的情形下树的平均搜索长度达到最小,因此,图长度达到最小,因此,图(c)和图和图(e)的情形是最的情形是最优二叉搜索树。优二叉搜索树。doiftoq0=0.15q1
10、=0.1p1=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;第13页,本讲稿共79页n一般把平均搜索长度达到最小的扩充的二一般把平均搜索长度达到最小的扩充的二叉搜索树称作最优二叉搜索树。叉搜索树称作最优二叉搜索树。n等概率条件下,最优二叉搜索树的最短内等概率条件下,最优二叉搜索树的最短内部路径长度与最短外部路径长度部路径长度与最短外部路径长度,课本课本383页页:第14页,本讲稿共79页 一、什么是平衡二叉树 二、失衡二
11、叉排序树的分析与调整 平衡二叉树第15页,本讲稿共79页平衡二叉树又称为平衡二叉树又称为AVL树。树。一棵平衡二叉树或者是空树,或者是具有下列性质一棵平衡二叉树或者是空树,或者是具有下列性质一棵平衡二叉树或者是空树,或者是具有下列性质一棵平衡二叉树或者是空树,或者是具有下列性质的二叉排序树:的二叉排序树:的二叉排序树:的二叉排序树:左子树与右子树的高度之差的绝对值小于等于左子树与右子树的高度之差的绝对值小于等于1;左子树和右子树也是平衡二叉排序树。左子树和右子树也是平衡二叉排序树。第16页,本讲稿共79页例:平衡二叉树40247053452860 引入平衡二叉树的目的是为了提高查找效率,引入平
12、衡二叉树的目的是为了提高查找效率,使其平均使其平均查找长度为查找长度为O(log2n)。402470532860第17页,本讲稿共79页 根据平衡二叉树的定义,根据平衡二叉树的定义,平衡二叉树上所有结点平衡二叉树上所有结点的平衡因子只能是的平衡因子只能是-1、0,或,或1。当我们在一个平衡二。当我们在一个平衡二叉排序树上插入一个结点时,有可能导致失衡,即出叉排序树上插入一个结点时,有可能导致失衡,即出现绝对值大于现绝对值大于1的平衡因子,如的平衡因子,如2、-2。为了方便起见,给每个结点附加一个为了方便起见,给每个结点附加一个数字数字数字数字,给出,给出该结点该结点该结点该结点左子树与右子树的
13、高度差左子树与右子树的高度差左子树与右子树的高度差左子树与右子树的高度差。这个数字称为结点的。这个数字称为结点的平衡因子。平衡因子。平衡因子。平衡因子。第18页,本讲稿共79页40247053452860402470532860例:下图对平衡二叉树和失去平衡的二叉排序树分别下图对平衡二叉树和失去平衡的二叉排序树分别标注了平衡因子。标注了平衡因子。0 01 1-1-1-1-10 00 0-1-11 10 0-1-1-2-20 0-1-1第19页,本讲稿共79页 一、什么是平衡二叉树 二、失衡二叉排序树的分析与调整 平衡二叉树第20页,本讲稿共79页 如果在一棵如果在一棵AVL树中插入一个新结点,
14、就有可能造成失衡,树中插入一个新结点,就有可能造成失衡,此时必须此时必须重新调整树的结构重新调整树的结构重新调整树的结构重新调整树的结构,使之恢复平衡。我们称调整,使之恢复平衡。我们称调整平衡过程为平衡过程为平衡旋转平衡旋转平衡旋转平衡旋转。现分别介绍这四种平衡旋转。现分别介绍这四种平衡旋转。平衡旋转可以归纳为四类:平衡旋转可以归纳为四类:平衡旋转可以归纳为四类:平衡旋转可以归纳为四类:v LL平衡旋转平衡旋转v RR平衡旋转平衡旋转v LR平衡旋转平衡旋转v RL平衡旋转平衡旋转第21页,本讲稿共79页若在若在A的的左子树的左子树上插入左子树的左子树上插入左子树的左子树上插入左子树的左子树上
15、插入结点,使结点,使A的平衡因的平衡因子从子从1增加至增加至2,需要进行一次,需要进行一次顺时针旋转顺时针旋转顺时针旋转顺时针旋转。(以以以以B B为旋转轴)为旋转轴)为旋转轴)为旋转轴)1)LL平衡旋转:平衡旋转:A AB BC CA AB BC C第22页,本讲稿共79页右单旋转右单旋转 (RotateRight)(RotateRight)hhhACEBD(a)(b)(c)hh+1BACEDhhh+1CEABD在左子树在左子树在左子树在左子树D D上插入新结点使其高度增上插入新结点使其高度增上插入新结点使其高度增上插入新结点使其高度增1 1,导致结点,导致结点,导致结点,导致结点A A的的
16、的的平衡因子增到平衡因子增到平衡因子增到平衡因子增到 -2-2,造成了不平衡。,造成了不平衡。,造成了不平衡。,造成了不平衡。为使树恢复平衡,从为使树恢复平衡,从为使树恢复平衡,从为使树恢复平衡,从A A沿插入路径连续取沿插入路径连续取沿插入路径连续取沿插入路径连续取3 3个结点个结点个结点个结点A A、B B和和和和D D,它们处于一条方向为,它们处于一条方向为,它们处于一条方向为,它们处于一条方向为“/”的直线上,需要做的直线上,需要做的直线上,需要做的直线上,需要做右单旋转。右单旋转。右单旋转。右单旋转。以结点以结点以结点以结点B B为旋转轴,将结点为旋转轴,将结点为旋转轴,将结点为旋转
17、轴,将结点A A顺时针旋转顺时针旋转顺时针旋转顺时针旋转。h0 00 00 0-1 1-1 1-2 2第23页,本讲稿共79页 左改组(新插入结点出现在危机结点的左子树上进行的调整)左改组(新插入结点出现在危机结点的左子树上进行的调整)的情况分析:的情况分析:1、LL 情况:(情况:(LL:表示新插入结点在危机结点的:表示新插入结点在危机结点的 左子树左子树的的左子树上左子树上)AB+1h-10+2+1hh-1h-1LL 改组改组BLBRARBA0h0h-1h-1BLBRAR危机结点危机结点改组前:高度为改组前:高度为 h+1 中序序列:中序序列:ABBLBRAR改组后:高度为改组后:高度为
18、h+1 中序序列:中序序列:ABBLBRAR注意:改组后注意:改组后 平衡度为平衡度为 0AB第24页,本讲稿共79页若在若在A的的右子树的右子树上插入右子树的右子树上插入右子树的右子树上插入右子树的右子树上插入结点,使结点,使A的平衡因子从的平衡因子从-1增加至增加至-2,需要进行一次,需要进行一次逆时针旋转逆时针旋转逆时针旋转逆时针旋转。(以以以以B B为旋转轴)为旋转轴)为旋转轴)为旋转轴)2 2)RRRR平衡旋转:平衡旋转:A AB BC CA AB BC C第25页,本讲稿共79页左单旋转左单旋转 (RotateLeft)(RotateLeft)hhhACEBD(a)(b)(c)hh
19、h+1BACEDhhh+1CEABD如如如如果果果果在在在在子子子子树树树树E E中中中中插插插插入入入入一一一一个个个个新新新新结结结结点点点点,该该该该子子子子树树树树高高高高度度度度增增增增1 1导导导导致致致致结点结点结点结点A A的平衡因子变成的平衡因子变成的平衡因子变成的平衡因子变成+2+2,出现不平衡。,出现不平衡。,出现不平衡。,出现不平衡。沿沿沿沿插插插插入入入入路路路路径径径径检检检检查查查查三三三三个个个个结结结结点点点点A A、C C和和和和E E。它它它它们们们们处处处处于于于于一一一一条条条条方方方方向为向为向为向为“”的直线上,需要做左单旋转。的直线上,需要做左单
20、旋转。的直线上,需要做左单旋转。的直线上,需要做左单旋转。以结点以结点以结点以结点C C为旋转轴,让结点为旋转轴,让结点为旋转轴,让结点为旋转轴,让结点A A反时针旋转。反时针旋转。反时针旋转。反时针旋转。+1+1+2+20 0+1+10 00 0第26页,本讲稿共79页若在若在A的的左左左左子树的子树的子树的子树的右右右右子树上插入子树上插入子树上插入子树上插入结点,使结点,使A的平衡因的平衡因子从子从1增加至增加至2,需要,需要先进行先进行先进行先进行逆逆逆逆时针旋转时针旋转时针旋转时针旋转,再再再再顺顺顺顺时针旋转时针旋转时针旋转时针旋转。(以插入的结点以插入的结点以插入的结点以插入的结
21、点C C为旋转轴)为旋转轴)为旋转轴)为旋转轴)A AB BC CA AB BC CA AB BC C3)LR平衡旋转:平衡旋转:第27页,本讲稿共79页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改组后:改组后:
22、高度为高度为 h+1 中序序列:中序序列:ABBLARCCLCRA第28页,本讲稿共79页Double 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 第29页,本讲稿共79页Double RotationsFig.28-7(ctd.)(c)after a left rotation;(d)after a right rotation.第30页,本讲稿共79
23、页若在若在A的的右右右右子树的子树的子树的子树的左左左左子树上插入子树上插入子树上插入子树上插入结点,使结点,使A的平衡因子从的平衡因子从-1增加至增加至-2,需要,需要先进行先进行先进行先进行顺顺顺顺时针旋转时针旋转时针旋转时针旋转,再再再再逆逆逆逆时针旋转时针旋转时针旋转时针旋转。(以插入的结点以插入的结点以插入的结点以插入的结点C C为旋转轴)为旋转轴)为旋转轴)为旋转轴)4 4 4 4)RLRLRLRL平衡旋转:平衡旋转:平衡旋转:平衡旋转:A AB BC CA AB BC CA AB BC C这种调整规则可以保证二叉排序树的次序不变这种调整规则可以保证二叉排序树的次序不变这种调整规则
24、可以保证二叉排序树的次序不变这种调整规则可以保证二叉排序树的次序不变第31页,本讲稿共79页 综综上上所所述述,在在一一个个平平衡衡二二叉叉排排序序树树上上插插入入一一个个新新结点结点S时,主要包括以下三步:时,主要包括以下三步:(1)查查找找应应插插位位置置,同同时时记记录录离离插插入入位位置置最最近近的的可可能能失衡结点失衡结点A(A的平衡因子不等于的平衡因子不等于0)。)。(2)插插入入新新结结点点S,并并修修改改从从A到到S路路径径上上各各结结点点的的平平衡因子。衡因子。(3)根据根据A、B的平衡因子,的平衡因子,判断是否失衡以及失衡判断是否失衡以及失衡类型,类型,并做相应处理。并做相
25、应处理。第32页,本讲稿共79页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.第33页,本讲稿共79页0 0131313130 0373737370 024242424例:例:请将下面序列构成一棵平衡二叉排序树:请将下面序列构成一棵平衡二叉排序树:(13,24,37,90,53)0 0131313130 037373737-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高度 平衡 二叉 优秀 课件
限制150内