软考考点---平衡二叉树

浅谈平衡二叉树

平衡二叉树(Balanced binarytree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。

        一、平衡二叉树的基本介绍

 

定义:平衡二叉树或为空树,或为例如以下性质的二叉排序树:

(1)左右子树深度之差的绝对值不超过1;

(2)左右子树仍然为平衡二叉树.

平衡因子BF=左子树深度-右子树深度.

平衡二叉树每一个结点的平衡因子仅仅能是1,0,-1。

若其绝对值超过1,则该二叉排序树就是不平衡的。

查找、插入和删除在平均和最坏情况下都是O(log n)。添加和删除可能须要通过一次或多次树旋转来又一次平衡这个树。

如图所看到的为平衡树和非平衡树示意图:

(图一左为非平衡二叉树,图一右图为平衡二叉树)

       二、平衡二叉树算法思想

若向平衡二叉树中插入一个新结点后破坏了平衡二叉树的平衡性。首先要找出插入新结点后失去平衡的最小子树根结点的指针。然后再调整这个子树中有关结点之间的链接关系,使之成为新的平衡子树。

当失去平衡的最小子树被调整为平衡子树后,原有其它全部不平衡子树无需调整,整个二叉排序树就又成为一棵平衡二叉树。

失去平衡的最小子树是指以离插入结点近期,且平衡因子绝对值大于1的结点作为根的子树。如果用A表示失去平衡的最小子树的根结点,则调整该子树的操作可归纳为下列四种情况。

(1)LL型平衡旋转法(右转)

因为在A的左孩子B的左子树上插入结点F,使A的平衡因子由1增至2而失去平衡。故需进行一次顺时针旋转操作。即将A的左孩子B向右上旋转取代A作为根结点,A向右下旋转成为B的右子树的根结点。而原来B的右子树则变成A的左子树。

图二(1)

图二(2)

(2)RR型平衡旋转法(左转)

因为在A的右孩子C的右子树上插入结点F,使A的平衡因子由-1减至-2而失去平衡。故需进行一次逆时针旋转操作。即将A的右孩子C向左上旋转取代A作为根结点。A向左下旋转成为C的左子树的根结点。而原来C的左子树则变成A的右子树。

图三(1)

图三(2)

(3)LR型平衡旋转法(先左后右)

因为在A的左孩子B的右子数上插入结点F,使A的平衡因子由1增至2而失去平衡。故需进行两次旋转操作(先逆时针,后顺时针)。

即先将A结点的左孩子B的右子树的根结点D向左上旋转提升到B结点的位置,然后再把该D结点向右上旋转提升到A结点的位置。即先使之成为LL型,再按LL型处理。

图四(1)

如图四中所看到的。即先将圆圈部分先调整为平衡树,然后将其以根结点接到A的左子树上。此时成为LL型,再按LL型处理成平衡型。

图四(2)

(4)RL型平衡旋转法(先右后左)

由的右孩子C的左子树上插入结点F,使A的平衡因子由-1减至-2而失去平衡。故需进行两次旋转操作(先顺时针,后逆时针),即先将A结点的右孩子C的左子树的根结点D向右上旋转提升到C结点的位置。然后再把该D结点向左上旋转提升到A结点的位置。

即先使之成为RR型。再按RR型处理。

图五(1)

如图五中所看到的,即先将圆圈部分先调整为平衡树。然后将其以根结点接到A的左子树上,此时成为RR型。再按RR型处理成平衡型。

图五(2)

(以上的四种节点包括了全部插入时导致不平衡的情况,图中所看到的不过平衡树插入后产生的最小不平衡子树)

平衡化靠的是旋转。

參与旋转的是3个节点(当中一个可能是外部节点NULL),旋转就是把这3个节点转个位置。注意的是,左旋的时候p->right一定不为空,右旋的时候p->left一定不为空,这是显而易见的。

假设从空树開始建立,并时刻保持平衡,那么不平衡仅仅会发生在插入删除操作上,而不平衡的标志就是出现bf == 2或者bf == -2的节点。8

例:在平衡二叉树中插入一个结点后造成了不平衡。设最低的不平衡结点为A,而且A的左孩子的平衡因子为-1。右孩子的平衡因子为0,则使其平衡的调整方法为(      )

A.LL型                                                                                                      
B.LR型

C.RL型                                                                                                     D.RR型

解:由图四(1)可知答案选B

(个人的一点理解,如有错误还请读者指教)

时间: 2024-10-16 16:13:20

软考考点---平衡二叉树的相关文章

软考考点---CUP

软考考点---CUP         中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).      组成:      功能: 读取指令 解释指令 读取数据 处理数据 保存数据      详解: 1. 寄存器组分为两大类: 用户可见的寄存器,有通用寄存器.数据寄存器.地址寄存器.标志寄存器等: 状态寄存器,包括程序计数器PC.指令寄存器IR.存储器地址寄存器MAR.存储器缓冲寄存

软考考点---CPU

软考考点---CPU         中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).      组成: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU2VuaW9yX2xlZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

2016年上半年软考考前注意事项!

2016年上半年软考即将于5月21日上午9:00开考,各位小伙伴了准备了半年,即将迎来考试的丰收期,在即将考试的时候,跟大家聊聊考试注意事项,共勉. 1.考试时间的问题: 网络工程师(其他的初级和中级)考试分为上午考试和下午考试,都是150分钟.一般来说,上午考试的75道选择题,做题的时间是非常充足的,平均下来2分钟一道题,看似不多,但是因为有些题目都是非常基础的,简单 的概念题,一看就会.不用30S. 但是碰到这种题目的时候,千万注意要看清楚题目.至少要保证题干部分4个选项都要看清楚.切不可粗

软考考前冲刺第七章软件工程基础知识

瀑布模型:严格遵循软件生命周期各阶段的固定顺序,一个阶段完成再进入另一个阶段.其优点是:可以使过程比较规范化,有利于评审;缺点在与:过于理想,缺乏灵活性,容易产生需求偏移.所以瀑布模型的应用场合为:需求明确的项目.二次开发项目以及与原型法配合使用. 快速原型模型:采用了一种动态定义需求的方法,通过快速的建立一个能够反映用户主要需求的软件原型,让用户在计算机上使用它,了解其概要,再根据反馈的结果进行修改,因此能够充分体现用户的参与与决策.原型化人员对原型的实施很重要,衡量他们的重要标准是能否从用户

软考考前冲刺第五章数据库系统基础知识

1.E-R模型向关系模型转换时,三个实体之间多对多的联系m:n:p应该转换为一个独立的关系模式,且该关系模式的关键字由三个实体的关键字组成. 在E-R模型向关系模型转换时,如果是多对多的联系,那么这个联系需要转换为一个独立的关系模式,且该关系模式的属性由各实体的关键字和该联系自身的属性组成,而该关系模式的关键字(主键)由各实体的关键字组成. 2.CD 投影运算是从一个关系里面抽取指明的属性(列)组成一个新的关系,这种运算是一种对列进行操作的运算.本题中∏1.3(R)的含义就是从关系R中,选取第一

软考考前冲刺第十三章UML建模

1.如果一个对象发送了一个同步消息,那么它要等待对方对消息的应答,收到应答后才能继续自己的操作.而发送异步消息的对象不需要等待对方对消息的应答便可以继续自己的操作. 2.部署图描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图.部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构的机器之间的中间件.因此它是在实施阶段被使用. 3.业务用例其实是对用例思想的一种延续,只是改变了使用场合.用例是从使用者的角度定义"软件系统"的需求.而业务用例不研究"软件

软考备战中

轰轰烈烈的软考已经进行了一半多了,明天就开始到了最后一个阶段--做真题,在不禁感叹时间过得飞快时,我也想说,软考我们可以的. 时间回到40天前,那时我们马上要开始软考,我的心里挺矛盾,想去积极迎战,但是有那么一丝恐惧.首先,上一届软考考的很好,但是自己又不是他们,自己也没考,所以小小的恐惧产生.但是好的一方面,是因为跟着米老师学了这么长时间,我们的学习方法变了,我们的生活态度也改变了,在没有做之前,我们不会说做不到,更不会放弃,所以在小小恐惧前面是更强的自信. 之后过了软考动员会,当时杨琛说那些

【学院官方整理】2016年备战上半年软考通关秘籍(内含经典押题资料)

亲爱的学员们: 您好!51CTO学院为梦想增值,诚邀您的关注!51CTO学院致力于让专家分享技术并让技术变现,让广大技术爱好者便捷.实惠的获取优质学习资源. 为了方便大家的学习,我们特别整理了2016年备战上半年软考通关秘籍(内含经典押题资料),点击查看更多>> 2016年备战上半年软考通关秘籍(内含经典押题资料) 企业招聘要求 随着互联网发展和IT技术的普及,网络和IT已经日渐深入到日常生活和工作当中,许多企事业单位的业务依赖于信息系统安全运行,国家和社会对网络与信息安全工程师的需求越来越大

软测试总结

从软考试复习时间3.24开始5.22开始. 5.23缩放距离北京考试. 5.24今天.这意味着,我们的软考学进入终端.是对于学习来说是没有终点站的. 在软考的复习中,没个人都享受着知识带给我们的充足感,为了给自己留下一个回顾的足迹.还是对自己的复习经历来一个总结吧. 一.出来混总是要还的 软考考的知识,能够说有百分之六七十都在自考的学习中遇到过. 假设自考大酱油的同学.好好掂量掂量吧~~~ 二.软考资料: 1.J2SE视频 主要是讲面向对象思想的,这个视频对我们以后的学习至关重要.掌握好面向对象