Каковы недостатки красно-черных деревьев?

#database #data-structures #data-storage #red-black-tree

#База данных #структуры данных #хранилище данных #красно-черное дерево

Вопрос:

Из всего, что я читал о красно -черных деревьях, кажется, что они являются лучшей структурой данных для хранения данных.

Я пытаюсь создать базу данных, и мне интересно, просто в аспекте реализации красно -черных деревьев, где мне следует быть более осторожным и чего я не должен делать.

Действительно ли красно -черные деревья настолько идеальны?

Ответ №1:

Это зависит от того, как вам нужно запрашивать и обновлять данные. Если, например, вам не нужны упорядоченные данные, хэш-карты, вероятно, лучше, поскольку они имеют (ожидаемый) постоянный поиск / вставку во времени вместо логарифмического. Даже если вам действительно нужны упорядоченные данные, красно-черные деревья могут быть не идеальными — в частности, если вы реализуете базу данных на диске. При дисковом вводе-выводе поиск обходится дороже по сравнению с последовательным чтением блоков, и поэтому цель состоит в том, чтобы свести к минимуму количество обращений к диску. В таких случаях лучше использовать B-деревья (или B -деревья, или B *-деревья) — все они предназначены для быстрой работы при хранении на дисках.

Ответ №2:

Красно-черные деревья далеки от совершенства для ЛЮБОГО доступа к данным. У них есть свое место, но другие методы, такие как хэшированные карты и простые старые списки, во многих случаях лучше.

Одним из заметных недостатков красно-черных деревьев во многих случаях является то, что это двоичное дерево и, следовательно, поисковые запросы — O (lg (n)), где в качестве хэш-таблиц используется поиск O (1).

Комментарии:

1. Я думаю, вы имеете в виду, что хэш-таблица равна O (1) для поиска.

2. @Brain: вы правы, я думал о постоянном времени, но уверен, что не ввел его, спасибо.