Я видел это в какой-то статье, и кто-то утверждал, что при удалении узла дерева AVL может быть не более часа (n) раз вращение. Я считаю, что мы можем добиться этого, создав дерево AVL как можно более изогнутым. Проблема в том, как это сделать. Это поможет мне много узнать об исследовании операции удаления. Огромное спасибо!Как генерировать дерево AVL как можно более однобоко?
ответ
Если вы хотите, чтобы сделать максимально криво AVL дерева, вы ищете Fibonacci tree, которая определяется индуктивно следующим образом:
- Фибоначчи дерево порядка 0 пусто.
- Дерево Фибоначчи порядка 1 - это единственный узел.
- Фибоначчи дерево порядка п + 2 является узлом, левая ребенок Фибоначчи дерево порядка п и чье право ребенка является Фибоначчи дерево порядка п + 1.
Например, вот Фибоначчи дерево порядка 5:
Фибоначчи деревья представляют собой максимальную величину перекоса, что дерево АВЛ может иметь, так как если баланс фактор был больше однобокой фактор баланса каждого узла будет превышать пределов размещены по деревьям AVL.
Вы можете использовать это определение очень легко создавать максимально однобокий дерева AVL:
function FibonacciTree(int order) {
if order = 0, return the empty tree.
if order = 1, create a single node and return it.
otherwise:
let left = FibonacciTree(order - 2)
let right = FibonacciTree(order - 1)
return a tree whose left child is "left" and whose right child is "right."
Надеется, что это помогает!
Хороший ответ. Если бы только было изображение, чтобы пойти с ним. –
(Обратите внимание, в частности, что каждый элемент не имеет баланс «фактор», отличный от 0.) –
- 1. Это дерево AVL?
- 2. Как перебалансировать дерево AVL после удаления листа?
- 3. BST дерево AVL
- 4. Уничтожить все дерево AVL
- 5. Дерево AVL delete
- 6. C++ дерево AVL баланс
- 7. AVL дерево - требуется: String, найдено: AVL
- 8. Итерация через дерево avl
- 9. AVL дерево вращающиеся методы?
- 10. Итерации через дерево AVL
- 11. AVL дерево баланс фактор
- 12. AVL дерево с отсортированным списком?
- 13. Как повернуть treap или AVL-дерево?
- 14. Дерево AVL: проблема наследования Python
- 15. AVL дерево rebaancing после удаления
- 16. «Вращение», чтобы получить дерево AVL
- 17. Дерево C++ AVL пересчитывает высоту
- 18. RedBlack и AVL дерево C++
- 19. AVL дерево вращения пример осветление
- 20. Когда дерево AVL лучше, чем хеш-таблица?
- 21. Преобразование деревьев AVL в красное черное дерево
- 22. Вставка строк в дерево AVL в C++?
- 23. Когда нужно выбрать дерево RB, дерево B-Tree или AVL?
- 24. AVL дерево четыре поворота не работает
- 25. AVL дерево Удаление с помощью рекурсии
- 26. Как вы создаете сбалансированное дерево (скажем, дерево AVL) с таблицей хешей для поиска узла?
- 27. Как генерировать дерево json из родословной
- 28. AVL двоичный поиск дерево вращение C++
- 29. Итерация через дерево Avl в java
- 30. найти сложность вставки в avl-дерево
См. Также: http://stackoverflow.com/questions/19622572/how-to-generate-maximally-unbalanced-avl-trees –