Это спорная строка из Cracking the Coding Interview о хеш-таблицах.
Другая распространенная реализация (помимо связанного списка) для хеш-таблицы - это использование BST в качестве базовой структуры данных.
Я знаю, что этот вопрос задавали раньше ... это так сбивает с толку, потому что все дают два разных ответа. Например
Зачем реализовывать хеш-таблицу с двоичным деревом поиска?
Ответ, получивший наибольшее количество голосов в этом сообщении, говорит о том, что в приведенном выше заявлении говорится о реализации хеш-таблицы с использованием двоичного дерева поиска без базового массива. Я понял, что, поскольку каждый вставленный элемент получает хеш-значение (целое число), элементы образуют общий порядок (каждую пару можно сравнить с ‹и>). Следовательно, мы можем просто использовать двоичное дерево поиска для хранения элементов хеш-таблицы.
С другой стороны, другие говорят
Хеш-таблица - реализация с двоичным деревом поиска
в книге говорится, что мы должны обрабатывать столкновения с двоичным деревом поиска. Таким образом, существует базовый массив, и когда возникают коллизии из-за того, что несколько элементов получают одно и то же хеш-значение и помещаются в один и тот же слот в массиве, здесь появляется BST.
Таким образом, каждый слот в массиве будет указателем на BST, который содержит элементы с одинаковым значением хеш-функции.
Я склоняюсь к аргументу второго поста, потому что первый пост на самом деле не объясняет, как такая реализация хеш-таблицы может справляться с коллизиями. И я не думаю, что он может достичь ожидаемого времени вставки / удаления / поиска O (1).
Но для второго поста, если у нас есть несколько элементов, которые получают одно и то же хеш-значение и помещаются в BST, я не уверен, как эти элементы упорядочены (как их можно сравнивать друг с другом?)
Пожалуйста, помогите мне раз и навсегда положить конец этому вопросу!