5

我有一个困惑:

我在许多帖子中读到哈希映射被实现为二叉搜索树,这使得各种操作的时间复杂度为对数顺序。

另一方面,哈希表提供恒定的时间获取。

但是,正如我在这篇文章中所读到的,在两种数据结构中检索/搜索元素的复杂性方面并没有提供任何区别。

所以,这是我的问题-

由于哈希表保证提供恒定的搜索时间复杂度,因此它们的实现必须不同于哈希映射的实现。那么,如果他们不提供恒定的时间搜索,为什么有人会使用哈希映射。另外,为什么首先将它们实现为二叉搜索树?

我知道哈希映射以排序形式存储键并通过映射提供迭代。但是,同样也可以在哈希表中提供。

4

1 回答 1

8

您的困惑源于以下几点:

哈希映射被实现为二叉搜索树

他们不是。没有任何明智的命名约定会使用术语“hashmap”来描述基于树的结构。

例如,在 Java 中,HashMap是基于哈希表并TreeMap基于树的。

C++ 在其标准容器的命名中既不使用“散列”也不使用“树”。HashMap与和大致对应的两个容器TreeMapstd::unordered_mapstd::map

于 2013-05-18T04:42:08.117 回答