Использование, плюсы и минусы для дерева двоичного поиска, 2-3 дерева и B-дерева

Я просматривал материалы из моего класса структуры данных, и я немного путаюсь с использованием этих трех видов деревьев. поэтому в каких ситуациях лучше использовать двоичное дерево поиска, 2-3 дерева и B-дерева соответственно? и каковы плюсы и минусы?

Большое вам спасибо! Я совершенно новичок в структуре данных...

3
задан user3337625 02 марта '14 в 10:57
источник поделиться
1 ответ

Все три из этих структур - это реализация упорядоченных словарей - они поддерживают набор, эффективно поддерживая вставки, удаления, поисковые запросы, преемники и запросы предшественника.

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

Что касается BST и 2-3 деревьев: "дерево двоичного поиска" - это не одна структура данных. Существуют чистые BST без балансировки, красные/черные деревья, деревья AVL, деревья AA, деревья деревьев, treaps, деревья козла отпущения, сбалансированные по весу деревья, деревья RAVL и т.д. Каждая из этих структур данных пытается сбалансировать BST, используя некоторые правила так что поиск, вставки и удаления выполняются быстро. Дерево 2-3 является вариацией в BST, которая позволяет использовать несколько ключей на node, чтобы дать простые правила для поддержания баланса. Вопрос обычно не будет "когда BST лучше, чем 2-3 дерева или наоборот", а "какие преимущества имеет 2-3 дерева над другими сбалансированными BST и наоборот", и что-то что вам придется анализировать через профилирование.

Надеюсь, это поможет!

2
ответ дан templatetypedef 09 июня '14 в 20:23
источник поделиться

Другие вопросы по меткам