【问题标题】:How to implement a hash table using a BST?如何使用 BST 实现哈希表?
【发布时间】:2013-09-26 16:32:30
【问题描述】:

哈希表的另一个常见实现(除了链表)是使用 BST 作为底层数据结构。
我已经搜索了网络和 SO,但找不到答案。 How do I implement a Hashtable using a Binary Search Tree? 的回答就像将 BST 包装到哈希表中一样,我认为这并不意味着使用 BST 实现哈希表。

请告诉我put()get() 方法的代码。

【问题讨论】:

标签: java data-structures hashtable binary-search-tree


【解决方案1】:

答案是你根本做不到!

BST 中的插入/查找时间是 O(log n),而在 HashTable 中应该是 O(1)

更新:
现在我看了这本书之后......
Bin 你错过了 Gayle 所指的内容 - 最初的问题是:

设计和实现一个使用链接(链表)的哈希表 处理碰撞

然后在答案的末尾它说

哈希表的另一个常见实现(除了链表)是 使用 BST 作为底层数据结构。

它与原始问题指的是同一件事:仅在发生冲突时才使用BST,这意味着buckets部分将被实现为BST/List而不是hash-map本身!

【讨论】:

  • 是的,我同意你的看法,我在一本名为《Cracking the Coding Interview》的书中读到了这一点,文字是: 哈希表的另一种常见实现是使用 BST 作为底层数据结构.检索一个元素将不再是 O(1),但它可以防止我们创建一个不必要的大数组来保存项目。那么,@alfasin 你怎么看?
  • 我有这本书的第4版,找不到这样的问题,你能指导我到章节/页吗?
  • 我的是第5版,第8章面向对象设计-->问题10
  • 第四次加法中没有,反正这本书也有答案;)
  • @alfasin。谢谢 :) 我的意思是在哈希冲突的情况下同一个桶中的项目数。我的错。应该将其称为 M。
猜你喜欢
  • 2018-01-06
  • 1970-01-01
  • 2012-10-30
  • 2020-12-30
  • 1970-01-01
  • 2016-03-25
  • 2011-10-14
  • 2011-09-15
相关资源
最近更新 更多