Мне кажется, что дерево AVL всегда более эффективно, чем BST. Итак, почему люди все еще используют BST? Есть ли затраты, связанные с реализацией AVL?В чем недостаток использования дерева AVL?
ответ
AVL Деревья имеют свои преимущества и недостатки по сравнению с другими деревьями, например, красно-черными деревьями или 2-3 деревьями или просто равными BST.
AVL деревья:
Преимущество:
- Simple. Довольно легко кодировать и понимать
- Дополнительное хранилище: довольно минимальное, 2 бит на узел (для хранения + 1,0, -1). Существует также трюк, где вы можете использовать 1 бит на узел, используя один бит вашего ребенка .
- Постоянная для поиска (смотрите в своем любимом аналитической книге: Кнут и т. Д.) Составляет 1,5 (так что 1,5 журнала). Красно-черные деревья имеют постоянную 2 (так 2 * log (n) для поиска).
Недостатки:
- Пропуски дороги иш. Логарифм по-прежнему остается для удаления узла, но вам, возможно, придется «повернуть» до корня дерева. Другими словами, большая константа. Красно-черным деревьям нужно делать только 1 поворот.
- Непросто код. Они, вероятно, являются «упрощенными» семейства деревьев, но все еще есть много или угловые случаи.
Если вы ожидаете, что ваши данные будут отсортированы, BST перейдет в связанный список. НО, если вы ожидаете, что ваши данные будут достаточно случайными, «в среднем», все ваши операции для BST (поиск, удаление, вставка) будут касаться логарифмического. ОЧЕНЬ легко закодировать BSTs: деревья AVL, хотя довольно простые для кодирования, имеют много угловых случаев, и тестирование может быть сложным.
Таким образом, простые двоичные поисковые деревья легко кодировать и получать правильные значения, а если ваши данные довольно случайны, они должны работать очень хорошо (в среднем все операции будут логарифмическими). AVL Tree сложнее кодировать, но гарантируют логарифмическую производительность по цене дополнительного пространства и более сложного кода.
- 1. Перебалансирования в AVL дерева
- 2. Java - поиск дерева AVL
- 3. Вставить метод дерева AVL?
- 4. В чем заключается недостаток использования asp.net MVC?
- 5. В чем недостаток использования 404 страниц?
- 6. Балансировка двоичного дерева (AVL)
- 7. AVL дерева поиска
- 8. Печать дерева AVL: Java
- 9. Вставка AVL дерева
- 10. AVL дерева принятие
- 11. C++ Реализация дерева AVL
- 12. Балансировка дерева AVL haskell
- 13. балансировка дерева AVL (C++)
- 14. Эффективность вращения дерева AVL
- 15. Реализация дерева AVL
- 16. Найти медиану AVL-дерева
- 17. реализация AVL дерева ToString()
- 18. генерирующего ключ для AVL дерева
- 19. Сохранение дерева AVL без поворота
- 20. Использование дерева AVL в java
- 21. Печать дерева AVL в столбцах
- 22. C: Создание сбалансированного дерева AVL
- 23. Создание дерева AVL из дерева двоичного поиска
- 24. Ошибка дерева двоичного дерева C++ AVL
- 25. AVL Вставка дерева - ошибка сегментации
- 26. Новое для реализации дерева AVL
- 27. Удалить родителя из дерева AVL
- 28. несбалансированного AVL проверки дерева функция
- 29. AVL дерева, с, реализация вращения
- 30. Реализация дерева AVL через наследование
'Дерево AVL всегда более эффективно, чем BST ...' Выполняя какую-либо операцию? – PaulMcKenzie
См. Http://stackoverflow.com/a/23277366/382471 – robert