Предпочтение между деревом AVL и деревом 2-3

может кто-нибудь сказать мне, если использование AVL предпочтительнее использования 2-3 дерева или наоборот и почему так?

спасибо

4
задан Melvic 04 янв. '12 в 15:33
источник поделиться
2 ответов

Мои предпочтения среди различных вкусов сбалансированных двоичных деревьев - это деревья AVL. Они проще программировать, чем любые альтернативы (см. Мою реализацию здесь и здесь, и обратите внимание, что даже удаление не особенно сложно), потому что есть меньше случаев для рассмотрения, они обеспечивают очень немного более быстрый поиск (потому что они более строго сбалансированы, чем альтернативы), и нет никаких скрытых худших случаев или амортизированных временных рамок.

Я также предпочитаю деревья AVL для хеш-таблиц. Я знаю, что сложность хеш-таблиц с ожидаемым временем превосходит гарантированную временную сложность AVL-деревьев, но на практике постоянные факторы делают две структуры данных в целом конкурентоспособными, и нет никаких проблем, связанных с некоторыми неожиданными данными, которые вызывают плохое поведение. Кроме того, я часто нахожу, что когда-то в течение срока службы программы, в ситуации, которая не предвидится, когда исходный выбор хеш-таблицы казался правильным, мне нужны данные в отсортированном порядке, поэтому я в конечном итоге переписываю программу для использования Дерево AVL вместо хеш-таблицы; сделайте это достаточно времени, и вы узнаете, что можете также начать с деревьев AVL.

Если ваши клавиши являются строками, тройные попытки поиска предлагают разумную альтернативу деревьям AVL.

3
ответ дан user448810 04 янв. '12 в 17:40
источник поделиться

Дерево AVL

Дерево AVL - это самобалансирующееся двоичное дерево поиска, изобретенное Г. М. Эдельсоном-Вельским и Э. М. Ландисиным 1962. Дерево называется АВЛ в честь его изобретателей. В дереве AVL высоты двух поддеревьев node могут отличаться не более чем на одном. Благодаря этому свойству дерево AVL также известно как сбалансированное по высоте дерево.

2-3 Дерево

В 2-3 дерева каждый интерьер node имеет двух или трех детей. Узлы с двумя детьми называются 2-узлами. 2-узлы имеют одно значение данных и два ребенка Узлы с тремя детьми называются 3-узлами. 3-узлы имеют два значения данных и три дочерних элемента (левый ребенок, средний ребенок и правый ребенок).

Пример: 2-3 Дерево

Это означает, что дерево 2-3 не является двоичным деревом. В этом дереве все листовые узлы находятся на одном уровне (нижний уровень).

Здесь вы можете найти разницу между почти всеми видами деревьев в структуре данных... https://knowshares.wordpress.com/2017/01/01/difference-binary-binarysearch-avl-2-3-b-trees/

0
ответ дан KVaghs 03 янв. '17 в 13:47
источник поделиться

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