庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

数据结构之AVL树

Posted on 2007-02-20 12:57 dennis 阅读(1194) 评论(0)  编辑  收藏 所属分类: 数据结构与算法
树的平衡,我们已经知道DWL算法,不过DWL算法需要从整体上平衡树,但是树的平衡也可以局部的进行,由Adel'son-Vel'skii-Landis提出了一种经典方法,称为AVL树。

1。概念:AVL树,或者说可适应树,是指树中每个节点的的平衡因子的绝对值不大于1,即只能为-1,0,1
平衡因子:节点的右子树的高度减去左子树的高度

2。AVL树的插入:从新插入节点到根的路径上,修改遇到的节点的平衡因子即可,对其他部分没影响
1)向右子女的右子树插入一个节点,单旋转就可以
2)向右子女的左子树插入一个节点,双旋转,先围绕父节点,再围绕祖父节点

3。AVL树的删除:从删除节点到根的路径上,任何不平衡因子的节点都需要修改,与插入不同,需要O(lgn)次旋转。

4。一个java实现:
http://www.koders.com/java/fid3B5247D34968077A6EFD4216589026D343559FF9.aspx?s=avl%2Btree

只有注册用户登录后才能发表评论。


网站导航: