什么时候AVL树比哈希表更好?

时间:2012-01-12 17:18:49

标签: performance data-structures hashmap hashtable avl-tree

更具体地说,如果使用AVL树而不是哈希表,是否可以更有效地执行任何操作?

2 个答案:

答案 0 :(得分:5)

我通常更喜欢使用AVL树来哈希表。我知道哈希表的预期时间O(1)复杂度超过了AVL树的保证时间O(log n)复杂度,但在实践中,常数因素使这两种数据结构具有竞争性,并且没有任何令人烦恼的担忧。一些引起不良行为的意外数据。另外,我经常发现在某个程序的维护生命期间,在最初选择哈希表似乎没有预见到的情况下,我需要按排序顺序排列数据,所以我最终重写程序以使用AVL树而不是哈希表;做足够多的时间,你就会知道你也可以从AVL树开始。

如果您的密钥是字符串,则三元搜索尝试为AVL树或哈希表提供了合理的替代方案。

答案 1 :(得分:-1)

当然,一个明显的区别是,对于AVL树(和其他平衡树),您可以拥有持久性:您可以在O(log N)中插入/删除树中的元素空间和时间不仅仅是新树,而且还能保留旧树。

使用哈希表,通常不能在小于O(N)的时间和空间中执行此操作。

另一个重要的区别是密钥需要的操作:AVL tress需要在密钥之间进行<=比较,而哈希表需要=比较以及hash函数。