我正在阅读 Steve Yegge 关于单身人士的文章。在其中他提到他的老师告诉他 AVL 树是邪恶的。仅仅是红树和黑树是更好的解决方案吗?
6 回答
从什么角度看邪恶?
一如既往:没有坏工具,只有坏工匠。
在我的记忆中,AVL 树的插入/删除速度较慢,但检索速度比红/黑树快。主要是因为平衡算法。
不,AVL 树在任何方面都肯定不是邪恶的。它们是完全有效的自平衡树结构。它们肯定具有与红黑树不同的性能特征,通常这些差异导致人们选择红黑树而不是 AVL 树。但这并不会使他们变得邪恶。
我确信 AVL 树是邪恶的,就像 GOTO 是邪恶的或 BUBBLE SORT 是邪恶的一样。
算法并不邪恶,但算法也不会跳来跳去告诉你它们什么时候合适。
这里有很多关于 Red-Black 和 AVL-Trees 之间差异的信息:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=22948
以及比较不同结构的论文:
http://www.stanford.edu/~blp/papers/libavl.pdf
简而言之 - AVL 搜索速度更快,Red-Black 插入速度更快。
不,它们并不邪恶,只是编程有点棘手。
AVL 树 http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut_avl.aspx
红黑树也从那里链接。
伸展树更酷。:)