Chinaunix首页 | 论坛 | 博客
  • 博客访问: 520302
  • 博文数量: 28
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3824
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-27 00:06
个人简介

一直从事高性能高并发服务器研究

文章分类

全部博文(28)

文章存档

2013年(28)

分类: 大数据

2013-09-20 03:23:25

大数据时代必懂的算法----AVL树

对于AVL树,我很遗憾,我从没有使用过它,但是理解它是理解红黑树的桥梁。

AVL树的特点

AVL树是平衡二叉树。
平衡二叉树的定义:对于任何一个节点,其左右子树的高度之差的绝对值<=1。这保证了查找、插入和删除在平均和最坏情况下都是O(lg n)。增加和删除这个树。
其优点是减少树的平均搜索长度,搜索很快。但是为了得到这个优点,却带来了一个致命的缺点:完全平衡的要求使的插入删除操作需要通过不定次数的旋转来让树重新达到完全平衡。平衡要求太苛刻了,严重降低了AVL树的插入删除性能。使它无法适用于统计业务。

我对AVL树的看法

1. 由于上述原因,AVL树不适合用于统计。
2. 假如用于“一次加载,多次查询”的业务,就是静态查询,它的查找性能虽高,但是又达不到好的哈希的O(1)时间复杂度。
综合这两个特点,我认为它没多大用处。
唯一的用处是用于教学,先搞懂AVL树,然后再深刻延伸向红黑树,起到一个抛砖引玉的作用。
也许有点片面,如果有朋友在哪个领域用这个合适,请告知,期待共同进步。

阅读(4035) | 评论(2) | 转发(0) |
1

上一篇:红黑树

下一篇:trie树

给主人留下些什么吧!~~

weizhulinux2014-02-08 12:34:21

knull:你好:
    我最近在学习严蔚敏版的数据结构,而且正好学习到AVL查找树。
    这里,有一点我不理解:在书本上看到的例子、理解,还有我自己的理解上,从不平衡到平衡的旋转,好像最多就2次啊——但是你这里说是不确定次数的。希望能够指点下

不好意思啊,最近忙
你可以参考这个算法演示
http://www.cs.usfca.edu/~galles/visualization/Algorithms.html
如果有什么问题,大家共同进步

回复 | 举报

knull2013-12-27 09:08:13

你好:
    我最近在学习严蔚敏版的数据结构,而且正好学习到AVL查找树。
    这里,有一点我不理解:在书本上看到的例子、理解,还有我自己的理解上,从不平衡到平衡的旋转,好像最多就2次啊——但是你这里说是不确定次数的。希望能够指点下