数据结构第六章 平衡树

数据结构第六章 平衡树

ID:10254166

大小:197.00 KB

页数:0页

时间:2018-06-13

数据结构第六章  平衡树_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《数据结构第六章 平衡树》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、6.5平衡二叉树平衡二叉树(balancedbinarytree)是对二叉搜索树的一种改进。二叉搜索树有一个缺点,那就是树的结构事先无法预料,随意性很大,它只与结点的值和插入次序有关,往往得到的是一棵很不“平衡”的二叉树。二叉搜索树与理想平衡树相差越远,树的高度就越高,其运算时间就越长,在最坏的情况下,就是对单链表进行运算的时间,其时间复杂度由O(n)变为O(n),从而部分或全部地丧失了利用二叉搜索树组织数据的优点。为了克服二叉搜索树的这个缺点,需要在插入和删除结点时对树的结构进行必要的调整,使二叉搜索树始终处于一种平

2、衡的状态,即始终成为一种平衡二叉树(balancedbinarytree),简称平衡树。当然它不是理想平衡树,因为那将使调整操作更为复杂,使调整带来的好处得不偿失。本节将首先讨论平衡树的定义和调整操作,然后讨论B_树的定义以及查找、插入和删除等运算。6.5.1平衡二叉树的定义平衡二叉树简称平衡树是由阿德尔森一维尔斯基和兰迪斯(Adelson-VelskiiandLandis)于1962年首先提出的,所以又称为AVL树。平衡树的定义是:若一棵二叉树中每个结点的左、右子树的高度至多相差1,则称此树为平衡树。我们把二叉树中每

3、个结点的左子树高度减去右子树的高度定义为该结点的平衡因子(balancefactor),因此,平衡树中每个结点的平衡因子只能是1,0或-1。图7-6(a)是一棵平衡树,图7-6(b)和图7-6(c)分别是一棵非平衡树,每个结点的上方所标数字为该结点的平衡因子。虽然平衡树的平衡性比理想平衡树要差一些,但理论上已经证明:具有n个结点的平衡树的高度在任何情况下决不会比具有相同结点数的理想平衡树高出45%以上。因此,在平衡树上进行查找运算虽比理想平衡树要慢一些,但通常比任意生成的二叉搜索树快得多,当然,其时间复杂度的数量级表示

4、仍为O(n).1236-115-1-1-220-148010-2320000162300650501216000028045025(a)平衡(b)非平衡(c)非平衡图7-6带平衡因子的二叉树当向一棵平衡树插入一个新结点时,若插入后,某些结点的左、右子树的高度不变,则就不会影响这些结点的平衡因子,因而也不会因为这些造成不平衡;若插入后某些结点的左子树高度增加1(右子树高度增加1的情况与之类似),则就影响了这些结点的平衡因子,具体又分为三种情况:(1)若插入前一部分结点的左子树高度为h与右子树的高度h相等,即平衡因子为0,

5、则插入后将使平衡因子变为1,但仍符合平衡的条件,不必对它们加以调整;(2)若插入前一部分结点的h小于h,即平衡因子为-1,则插入后将使平衡因子变为0,平衡更加改善,不必对它们进行调整;(3)若插入前一部分结点的h大于h,即平衡因子为1,则插入后将使平衡因子变为2,破坏了平衡树的限制条件,需对它们加以调整,使整个二叉搜索树恢复为平衡树。若插入后,某些结点的右子树高度增加1,则也分为相应的三种情况,对于第(1)种情况,平衡因子将由0变为-1,不必进行调整;对于第(2)种情况是平衡因子由-1变为-2,则必须对它们进行调整;对

6、于第(3)种情况是平衡因子由1变为0,平衡更加改善,也不必进行调整。假定向平衡树中插入一个结点后破坏了其平衡性,则首先要找出唯一一棵最小不平衡子树,然后再调整这个子树中有关结点之间的链接关系,使之成为新的平衡子树。当然,调整后该子树的二叉搜索树性质要不变,即调整前后得到的中序序列要完全相同。稍后便知,最小不平衡子树调整为平衡子树后,原有其他所有不平衡子树无需调整,整个二叉搜索树就又成为一棵平衡树。所谓最小不平衡子树是指以离插入结点最近,且平衡因子绝对值大于1的结点作为根的子树。如在图7-6(b)中,以值为30的结点作根

7、的子树是该树的最小不平衡子树,分别以20和36作为根的不平衡子树不是最小不平衡子树;在图7-6(c)中,以值为32的结点作根的子树是该树的最小不平衡子树,当然它也是唯一一棵不平衡子树。为了便于讨论,不妨设最小不平衡子树的根结点用A表示,则调整该子树的操作可归纳为下列四种情况:(1)LL型调整操作它是因在A结点的左(left)孩子(假定用B表示)的左(left)子树上插入结点,使得A结点的平衡因子由1变为2而引起的不平衡所进行的调整操作。调整过程如图7-7所示,图中用长方框表示子树,用长方框的高度表示子树的高度,用带阴影

8、的小方框表示被插入的结点。图7-7(a)为插入前的平衡子树,、和的子树高度均为h(h0,若h=0,则它们均为空树),A结点和B结点的平衡因子分别为1和0。图7-7(b)为在B的左子树上插入一个新结点,以A为根的子树成为最小不平衡子树的情况。图7-7(c)为调整后成为新的平衡平衡子树的情况,调整规则是:将A的左孩子B向右旋转代替A成

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。