- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.5平衡二叉树
平衡二叉树(balanced binary tree)是对二叉搜索树的一种改进。二叉搜索树有一个缺点,那就是树的结构事先无法预料,随意性很大,它只与结点的值和插入次序有关,往往得到的是一棵很不“平衡”的二叉树。二叉搜索树与理想平衡树相差越远,树的高度就越高,其运算时间就越长,在最坏的情况下,就是对单链表进行运算的时间,其时间复杂度由O(n)变为O(n),从而部分或全部地丧失了利用二叉搜索树组织数据的优点。为了克服二叉搜索树的这个缺点,需要在插入和删除结点时对树的结构进行必要的调整,使二叉搜索树始终处于一种平衡的状态,即始终成为一种平衡二叉树(balanced binary tree),简称平衡树。当然它不是理想平衡树,因为那将使调整操作更为复杂,使调整带来的好处得不偿失。
本节将首先讨论平衡树的定义和调整操作,然后讨论B_树的定义以及查找、插入和删除等运算。
6.5.1平衡二叉树的定义
平衡二叉树简称平衡树是由阿德尔森一维尔斯基和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。平衡树的定义是:若一棵二叉树中每个结点的左、右子树的高度至多相差1,则称此树为平衡树。我们把二叉树中每个结点的左子树高度减去右子树的高度定义为该结点的平衡因子(balance factor),因此,平衡树中每个结点的平衡因子只能是1,0或-1。图7-6(a)是一棵平衡树,图7-6(b)和图7-6(c)分别是一棵非平衡树,每个结点的上方所标数字为该结点的平衡因子。
虽然平衡树的平衡性比理想平衡树要差一些,但理论上已经证明:具有n个结点的平衡树的高度在任何情况下决不会比具有相同结点数的理想平衡树高出45%以上。因此,在平衡树上进行查找运算虽比理想平衡树要慢一些,但通常比任意生成的二叉搜索树快得多,当然,其时间复杂度的数量级表示仍为O(n).
1 2 36 -1 15
-1 -1 -2 20 -1 48 0 10 -232
0 0 0 016 2 30 0 650 5 012 1 60
0 0 0 28 0 45
0 25
(a)平衡 (b) 非平衡 (c)非平衡
图7-6 带平衡因子的二叉树
当向一棵平衡树插入一个新结点时,若插入后,某些结点的左、右子树的高度不变,则就不会影响这些结点的平衡因子,因而也不会因为这些造成不平衡;若插入后某些结点的左子树高度增加1(右子树高度增加1的情况与之类似),则就影响了这些结点的平衡因子,具体又分为三种情况:
(1)若插入前一部分结点的左子树高度为h与右子树的高度h相等,即平衡因子为0,则插入后将使平衡因子变为1,但仍符合平衡的条件,不必对它们加以调整;
(2)若插入前一部分结点的h小于h,即平衡因子为-1,则插入后将使平衡因子变为0,平衡更加改善,不必对它们进行调整;
(3)若插入前一部分结点的h大于h,即平衡因子为1,则插入后将使平衡因子变为2,破坏了平衡树的限制条件,需对它们加以调整,使整个二叉搜索树恢复为平衡树。
若插入后,某些结点的右子树高度增加1,则也分为相应的三种情况,对于第(1)种情况,平衡因子将由0变为-1,不必进行调整;对于第(2)种情况是平衡因子由-1变为-2,则必须对它们进行调整;对于第(3)种情况是平衡因子由1变为0,平衡更加改善,也不必进行调整。
假定向平衡树中插入一个结点后破坏了其平衡性,则首先要找出唯一一棵最小不平衡子树,然后再调整这个子树中有关结点之间的链接关系,使之成为新的平衡子树。当然,调整后该子树的二叉搜索树性质要不变,即调整前后得到的中序序列要完全相同。稍后便知,最小不平衡子树调整为平衡子树后,原有其他所有不平衡子树无需调整,整个二叉搜索树就又成为一棵平衡树。
所谓最小不平衡子树是指以离插入结点最近,且平衡因子绝对值大于1的结点作为根的子树。如在图7-6(b)中,以值为30的结点作根的子树是该树的最小不平衡子树,分别以20和36作为根的不平衡子树不是最小不平衡子树;在图7-6(c)中,以值为32的结点作根的子树是该树的最小不平衡子树,当然它也是唯一一棵不平衡子树。为了便于讨论,不妨设最小不平衡子树的根结点用A表示,则调整该子树的操作可归纳为下列四种情况:
(1)LL型调整操作
它是因在A结点的左(left)孩子(假定用B表示)的左(left)子树上插
您可能关注的文档
最近下载
- 电气知识培训ppt课件.pptx VIP
- 选择性必修1 第2课 西方国家古代和近代政治制度的演变 课件(共50张PPT).pptx VIP
- 中联W6015-8A塔吊说明书操作手册.pdf
- 金属地下矿山安全培训.pptx
- 2024年初中历史教材新变化及解读.doc
- 银行从业资格考试初级风险管理第六章流动性风险管理综合练习与答案.docx VIP
- 2023年新疆高考英语试卷真题(含答案)+听力材料.docx
- 第2课 西方国家古代和近代政治制度的演变 课件(共33张PPT).ppt.pptx VIP
- 爆炸性气体环境用电气装置和电气设备选型.pdf VIP
- 松下(Panasonic)NR-C28VX2 说明书 用户手册.pdf
文档评论(0)