红黑树与AVL

liuhex 2011-06-18 04:12:56
请大家讨论一下:红黑树要比AVL有什么优势,以及各自应用的场合?
高手指教一下吧
...全文
329 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
do多多do 2013-03-11
  • 打赏
  • 举报
回复
为什么书上都不怎么介绍红黑树呢?
liuhex 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 superdullwolf 的回复:]

红黑树更实用一点。
[/Quote]
知道红黑树在STL和linux内核中使用,但是采用它肯定有优势,优势在哪里呢?
liuhex 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dizuo 的回复:]

红黑树所有操作都在logn之内
[/Quote]
AVL的所有操作不在logn之内吗?
ljsspace 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 superdullwolf 的回复:]

红黑树更实用一点。
[/Quote]

AVL树是纯数学家发明的,用于课堂教学比较实用了。RB树是计算机科学家发明的,工程中比较实用,呵呵
超级大笨狼 2011-06-19
  • 打赏
  • 举报
回复
红黑树更实用一点。
ljsspace 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liuhex 的回复:]

引用 5 楼 superdullwolf 的回复:

红黑树更实用一点。

知道红黑树在STL和linux内核中使用,但是采用它肯定有优势,优势在哪里呢?
[/Quote]
旋转操作非常局部化,而且次数极少(插入最多两次旋转,删除最多三次旋转),而改变颜色的操作不会影响到用户对树的query操作(即不要lock),另外很多树,如AVL树,2-3树,2-4树都可以转化成红黑树,红黑树能达到O(logn)高度,但是不像AVL树那样严格要求左右子树高度差必需相差不超过1。可以说RB树是目前为止高度要求最灵活的准平衡BST。我说准平衡是相对完全二叉树来说的,AVL树(比如Fibonacci树)也不是完美平衡的。
ljsspace 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 redhumor 的回复:]

不过 AVL树一定是红黑树——将所有点变成黑色
[/Quote]

这好像不一定, 例如:
3
/ \
2 4
/
1
是AVL树,所有点变成黑色就不是RB树了。
qq675927952 2011-06-18
  • 打赏
  • 举报
回复
up.......起。。。
ryfdizuo 2011-06-18
  • 打赏
  • 举报
回复
红黑树所有操作都在logn之内
redhumor 2011-06-18
  • 打赏
  • 举报
回复
红黑树的调整其实感觉上就比AVL要小,红黑树是局部平衡,AVL的平衡性要求比红黑树高,如果将红黑树所有节点都变成黑色的,就成了个弱AVL树(不一定是AVL树,),不过 AVL树一定是红黑树——将所有点变成黑色,用途,嘛,就是 红黑树操作适用于内存需求不是很大的那种——毕竟要标颜色,但是 其插入很快啊,至少比AVL快……

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧