thAVLBtreesearch.ppt

上传人:b****2 文档编号:2568986 上传时间:2022-11-01 格式:PPT 页数:17 大小:2.91MB
下载 相关 举报
thAVLBtreesearch.ppt_第1页
第1页 / 共17页
thAVLBtreesearch.ppt_第2页
第2页 / 共17页
thAVLBtreesearch.ppt_第3页
第3页 / 共17页
thAVLBtreesearch.ppt_第4页
第4页 / 共17页
thAVLBtreesearch.ppt_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

thAVLBtreesearch.ppt

《thAVLBtreesearch.ppt》由会员分享,可在线阅读,更多相关《thAVLBtreesearch.ppt(17页珍藏版)》请在冰豆网上搜索。

thAVLBtreesearch.ppt

*8.48.4平衡二叉树平衡二叉树为保证树型,查找有较高的查找速度,希望该二叉树接近为保证树型,查找有较高的查找速度,希望该二叉树接近满二叉树,即,希望二叉树的每个结点的左、右子树高度尽满二叉树,即,希望二叉树的每个结点的左、右子树高度尽量接近平衡,即使按任意次序不断地插入结点,也不要使此量接近平衡,即使按任意次序不断地插入结点,也不要使此树成为退化树。

树成为退化树。

8.4.18.4.1定义(定义(BalancedbinaryTree/Height-BalancedTreeBalancedbinaryTree/Height-BalancedTree)1.1.定义:

定义:

又称又称AVL树树,或是空、或是具有下列性质的二叉树:

或是空、或是具有下列性质的二叉树:

它的左子树和右子树都是平衡二叉树,且左子树和右子树它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过的深度之差的绝对值不超过11。

2.2.例子:

例子:

是二叉搜索树是二叉搜索树树和所有子树的左右树和所有子树的左右子树高度之差绝对值不超过子树高度之差绝对值不超过11111514263971816100000001*8.4.18.4.1定义(定义(BalancedbinaryTreeHeight-BalancedTreeBalancedbinaryTreeHeight-BalancedTree)3.3.平衡因子(平衡因子(balancefactorbalancefactor)结点右子树高度减去左子树高度所得高度差结点右子树高度减去左子树高度所得高度差AVLAVL树中所有结点的平衡因子只能取树中所有结点的平衡因子只能取00,11,11AVLAVL树的树的ASLASL可保持在可保持在O(logO(log22n)n)8.4.28.4.2平衡旋转平衡旋转原因原因方法方法*平衡旋转分类(平衡旋转分类(11)1.LL1.LL平衡旋转平衡旋转右右单旋转单旋转5040596430474030505947642.RR2.RR平衡旋转平衡旋转左左单旋转单旋转*平衡旋转分类(平衡旋转分类(22)3.LR3.LR平衡旋转平衡旋转先左后右双旋转先左后右双旋转h(a)F子树插入结点高度变为hCA-2FhBDE1h-1Gh插入-1(b)绕E,将B逆时针转后hACEhhBDFh-1GEBhhDFAh-1hCG(c)绕E,将A顺时针转后0683985462750LR型型ABEGFDC绕绕E,将,将B逆时针转后逆时针转后5039276885AC46E绕绕E,将,将A顺时针转后顺时针转后(LL)463968278550683985462743思考:

该类思考:

该类LR型平衡旋转如何型平衡旋转如何处理?

结果如何?

处理?

结果如何?

4.RL4.RL平衡旋转平衡旋转先右后左双旋转先右后左双旋转*8.4.38.4.3平衡二叉树的插入平衡二叉树的插入1.1.平衡二叉树插入结点的算法思想平衡二叉树插入结点的算法思想(11)按二叉排序树的性质插入结点。

)按二叉排序树的性质插入结点。

(22)如如果果插插入入结结点点之之后后出出现现不不平平衡衡的的结结点点,则则继继续续步步骤骤(33);否则插入完成。

否则插入完成。

(33)找到失去平衡的最小子树。

)找到失去平衡的最小子树。

(44)判断平衡旋转的类型作相应平衡化处理)判断平衡旋转的类型作相应平衡化处理。

由平衡二叉树由平衡二叉树的定义可知,的定义可知,在插入之后如在插入之后如果树上出现平果树上出现平衡因子绝对值衡因子绝对值大于大于1的结点,的结点,则说明二叉排则说明二叉排序树已不平衡。

序树已不平衡。

2.2.关键问题关键问题输入次序:

输入次序:

11110如何发现?

如何发现?

393903911+1,232311+1如何确定如何确定?

在查找结点在查找结点xx的插入位置的过程中,记下的插入位置的过程中,记下从根结点到插入位置的路径上离插入位置从根结点到插入位置的路径上离插入位置最近的且平衡因子绝对值为最近的且平衡因子绝对值为11的结点,并的结点,并令指针令指针aa指向该结点;如果此路径上不存指向该结点;如果此路径上不存在平衡因子绝对值为在平衡因子绝对值为11的结点,则指针的结点,则指针aa指指向根结点。

向根结点。

a2339-1230如何判断如何判断?

RLRLRL型型392311392311如如果果结结点点aa的的平平衡衡因因子子绝绝对对值值为为22,则则表表示示二二叉叉排排序序树树失失去去平平衡衡,再再根根据据结结点点aa及及其其左左右右孩子的平衡因子值来确定平衡旋转的类型。

孩子的平衡因子值来确定平衡旋转的类型。

思考题:

思考题:

做平衡旋转时做平衡旋转时/后各结点的平衡因子如何变化?

后各结点的平衡因子如何变化?

继继续续输输入入6868,8585,88,33,4646,2727,5050,插插入入过过程?

程?

*8.4.48.4.4平衡二叉树的删除平衡二叉树的删除1.1.平衡二叉树删除结点的算法思想平衡二叉树删除结点的算法思想(11)如果被删结点)如果被删结点xx有左、右孩子,首先查找有左、右孩子,首先查找xx在中序次序下的在中序次序下的直接前直接前驱驱yy(同样也可以找同样也可以找直接后继直接后继),再把结点,再把结点yy的内容传送给结点的内容传送给结点xx,再,再删除结点删除结点yy。

(22)对对于于删删除除最最多多有有一一个个孩孩子子的的结结点点xx,可可以以简简单单地地把把xx的的双双亲亲结结点点中中原原来来指指向向xx的的指指针针改改指指到到xx的的孩孩子子结结点点。

如如果果结结点点xx没没有有孩孩子子,则则其其双双亲亲结结点点的相应指针置为空。

的相应指针置为空。

hhhABCDE0-1hh-1hABCEFG(33)对对于于从从结结点点xx的的双双亲亲到到根根结结点点的的路路径径上上的的每每一一个个结结点点PP,当当布布尔尔变变量量shorter(shorter(子子树树高高度度是是否否被被缩缩短短)的的值值为为truetrue时时,根根据据以以下下三三种种不不同同的的情情况况继继续续步步骤骤,直直到到布布尔尔变变量量shortershorter的的值值为为falsefalse时,整个删除算法结束。

时,整个删除算法结束。

(结点(结点yy最多有一个孩子,因为最多有一个孩子,因为yy即为即为xx左左/右子树中的最右子树中的最大大/小值,也就是小值,也就是xx左左/右子树中的最右右子树中的最右/左结点)。

左结点)。

*1.1.平衡二叉树删除结点的算法思想平衡二叉树删除结点的算法思想(11)情况一:

)情况一:

结结点点pp的的平平衡衡因因子子为为00,如如果果它它的的左左子子树树或或右右子子树树被被缩缩短短(shortershorter的的值值为为truetrue),则则它它的的平平衡衡因因子子改改为为11或或-1-1,由由于于此此时时以以结结点点pp为为根根的的子子树树高高度度没没有有缩短,所以置缩短,所以置shortershorter的值为的值为falsefalse。

6850463927118323pp(22)情况二:

)情况二:

结结点点pp的的平平衡衡因因子子不不为为00,且且其其较较高高的的子子树树被被缩缩短短,则则PP的的平平衡衡因因子子改改为为00。

由由于于此此时时以以结结点点pp为为根根的的子子树树高高度度被被缩缩短,所以短,所以shortershorter的值仍为的值仍为truetrue。

1100*1.1.平衡二叉树删除结点的算法思想平衡二叉树删除结点的算法思想(11)情况三:

)情况三:

结结点点pp的的平平衡衡因因子子不不为为00,且且较较矮矮的的子子树树又又被被缩缩短短,则则在在结结点点pp发发生生不不平平衡衡。

此此时时,将将进进行行平平衡化旋转来恢复平衡。

衡化旋转来恢复平衡。

68504639278323如如果果qq的的平平衡衡因因子子为为00,则则只只要要执执行行一一个个单单旋旋转转就就可可恢恢复复结结点点pp的的平平衡衡,由由于于旋旋转转后后被被处处理理子子树树的的高度没有缩短,所以置高度没有缩短,所以置shortershorter的值为的值为falsefalsePP(11)qq006850462383927如如果果qq的的平平衡衡因因子子与与pp的的平平衡衡因因子子相相同同,则则只只要要执执行行一一个个单单旋旋转转就就可可恢恢复复结结点点pp的的平平衡衡。

由由于于此此时时被被处处理理子子树树的的高高度度被被缩缩短短,所所以以shortershorter的的值值仍仍为为truetrue。

最最后,结点后,结点pp和和qq的平衡因子均改为的平衡因子均改为00。

685046398323q

(1)q

(1)68504623839如果如果pp与与qq的平衡因子的符号相反,则需要执行一的平衡因子的符号相反,则需要执行一个双旋转来恢复平衡,先围绕个双旋转来恢复平衡,先围绕qq转、再围绕转、再围绕pp转。

由转。

由于此时被处理子树的高度被缩短,所以于此时被处理子树的高度被缩短,所以shortershorter的值仍的值仍为为truetrue,新的根结点的平衡因子置为,新的根结点的平衡因子置为00,其它结点的,其它结点的平衡因子作相应处理。

平衡因子作相应处理。

684639278323P

(1)P

(1)q(-q(-11)*8.5B8.5B树树顺序查找、二分查找、二叉排序树适用于内查找顺序查找、二分查找、二叉排序树适用于内查找(较小较小的表的表);不适用于较大的、存储在外存储器上的文件。

;不适用于较大的、存储在外存储器上的文件。

(平平衡衡)二叉排序树中二叉排序树中若以结点作为内外存交换的单位,则在查若以结点作为内外存交换的单位,则在查找过程中需对外存进行找过程中需对外存进行log2n次访问,显然很费时。

次访问,显然很费时。

分块查找可以应用于外查找;分块查找可以应用于外查找;B-B-树是一种多路平衡查找树是一种多路平衡查找树,也适用于外查找。

树,也适用于外查找。

8.5.18.5.1基本概念基本概念1.1.动态的动态的mm路查找树路查找树类似静态表的分类似静态表的分块(索引)查找块(索引)查找一棵一棵m路查找树,它或者是一棵空树,或者是满足如下性质的树:

路查找树,它或者是一棵空树,或者是满足如下性质的树:

(1)根根结结点点最最多多有有m棵棵子子树树,并并具具有有如如下下的的结结构构:

(n、p0、k1、p1、k2、p2、kn、pn),其其中中,Pi是是指指向向子子树树的的指指针针,Ki是数据元素的关键字;是数据元素的关键字;1inm。

(2)KiKi+1,1in。

(3)在在Pi所指的子树中所有的数据元素的关键字都小于所指的子树中所有的数据元素的关键字都小于Ki+1,且,且大于大于Ki,0in。

(4)在在Pn所所指指的的子子树树中中所所有有数数据据元元素素的的关关键键字字都都大大于于kn,而而子子树树P0中的所有数据元素的关键字都小于中的所有数据元素的关键字都小于K1。

(5)Pi所指的子树也是所指的子树也是m路查找树,路查找树,0in。

特点:

特点:

对于一棵对于一棵m路查找树,适路查找树,适当提高查找树的路数当提高查找树的路数m,可以改,可以改善善m路查找树的查找性能。

路查找树的查找性能。

如果查找树是平衡的,可如果查找树是平衡的,可以使以使m路查找树的查找性能接近路查找树的查找性能接近最佳。

最佳。

*8.5.18.5.1基本概念基本概念2.B2.B树树q定义定义B-B-树是一种树是一种平衡的平衡的多路查找树多路查找树,用于文件系统。

,用于文件系统。

一棵一棵mm阶的阶的B-B-树树,或为空或为空,或为满足下列特性的或为满足下列特性的mm叉树叉树v树中每个结点树中每个结点至多至多有有mm棵子树棵子树;v若根结点不是叶子结点若根结点不是叶子结

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1