查找——AVL

 平衡二叉树(AVL),是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。
 AVL树是搜索用的,树的hierarchy本身没什么特别的意义。旋转的关键是,保证平衡,并且中序遍历后的顺序不变。可以把它理解为一个黑箱,查找使用,我们并不需要知道它内部的hierarchy。

 在AVL树中,最重要的是理解树的旋转。
 我们将AVL树大体分成直线型和折线型,具体分为4种,其旋转要点是:当AVL的某个(或某几个)结点的平衡因子为-2或2时,从新加入的那个点开始,逆着箭头向根节点方向找到距离最近的、平衡因子为-2或2的结点后(一定只有三个结点),旋转这三个结点。
 在这段话中,我们首先要知道:什么是平衡因子,怎么算平衡因子?
 根据平衡二叉树的定义(每一个节点的左子树和右子树的高度差至多等于1)可知:
 

BF=A节点左子树深度-A节点右子树深度

 所以,根据AVL树的定义,每个节点的BF只可能为1,0,-1这三个数。 在建立平衡二叉树的时候,当某个节点的BF为-2或者2时,这个树就不是平衡二叉树了,我们就要 立刻通过旋转使其恢复成平衡二叉树,也因此不可能出现3、4之类的其他数(当然,在判断一棵树是否是平衡二叉树的时候,BF可能是任何值)。
 知道了BF的算法,我们来看具体的旋转,这个博主的图例概括了所有的基本情况
AVL树的旋转操作
AVL旋转图例

Created with Raphaël 2.1.0 开始 加入新节点 某点BF为2或-2? 向节点方向依次找到三个点 旋转 是否是二叉排序树? 结束 yes no yes no
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运行环境:所有运行Windows Mobile 5.0及以上版本的PDA/手机 分辨率支持:240*320 GPS卫星地图导航专家(专业版)v0.91可以为您提供基于卫星地图的导航功能(卫星地图将根据您的网络情况实时下载),该版本为测试版(有效期至2007-12-31),如果您喜欢本软件,您可与作者联系有关正式版本的信息。如果您有任何问题或需求,也可与作者联系,作者将根据情况不断对该软件进行改进。 本软件的测试版为自由软件,您可以任意复制发布,但不能以任何方式进行修改、嵌入插件、加壳或反向工程,作者将保留对该软件的所有权利。 本软件的14大主要功能特点: 1、支持内置/外置/蓝牙GPS设备。 2、支持十条航线及10000个以上的航点设置。 3、支持航点编辑、选择功能。 4、支持手动、自动、智能、正反向导航模式。 5、支持位置、高度、速度、方向、距离、相对方向等导航功能。 6、支持罗盘动态显示方向及下一导航点的相对方向指示。 7、支持有线网络、GPRS、802.11b等网络模式,可自动选择。 8、支持卫星地图的实时按需下载,且支持地图缓存,已下载过的地图不会再次下载。 9、支持20层不同精度的卫星地图分辨率模式,且支持在地图模式下右击快速增加航点功能。 10、卫星地图支持定位导航模式和浏览模式,可使用OK键/上下左右键进行切换。 11、卫星地图导航模式下支持当前位置指示、下一航点指示、当前方向指示、导航方向指示、下一航点距离指示、下一航点的后续方向指示等功能。 12、软件适用于全球任何地点的定位/卫星地图导航功能,且定位模式下支持自动全程轨迹记录功能。 13、支持中国90个城市的POI搜索定位。 14、支持中国90个城市的路线搜索并能在卫星地图上显示全程路由。 2007-4-5 版本 0.9.1.3 1、修改由于微软软键盘控件引起的程序不稳定问题。 2、修改临时地图文件的保存方式,由一级目录保存改为两级目录保存,以解决在文件数量大时,性能下降的问题。 3、修改Internet的访问方法,使得Internet连接更为灵活稳定。 4、在航线编缉功能中,新增全选功能。 5、增加Internet连接Cache控制,下载完成后立即清除Internet Cache,以免占用系统存储空间。 2007-4-4 版本 0.9.1.2 1、修改在搜索POI位置信息时,由于部分POI位置不存在而导致的被搜索正常POI位置信息无法返回的BUG。 2、增加连接管理控制的可靠性,并增加相关提示。 3、修改卫星地图显示模块因数据处理不当,而造成的内存消耗过快,而导致的程序跳出或地图无法显示的BUG。 2007-4-3 版本0.9.1.1 一、新增功能 1、新增支持中国90个城市的POI(Point of Interest)搜索功能。 2、新增支持中国90个城市的行车路线搜索功能。 3、新增支持在卫星地图上显示全程路由功能。 二、修改BUG 1、修改当两个坐标点经度完全相同,纬度的差距小于0.00005度(约合0.18\")时,系统的导航方向判断可能不正确的问题。 2007-3-25 版本0.9.0.1 初始版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值