Дерево AVL - хорошо известная структура данных внутренней памяти, тогда как Сбалансированное дерево - это известная структура данных внешней памяти. Почему мы не можем использовать Сбалансированные деревья для внутренней памяти?AVL Tree vs Balanced Tree
ответ
Вы очень любите можете иметь сбалансированные деревья во внутренней памяти. Дерево AVL - это просто один тип сбалансированного дерева, а также другие, такие как красно-черные и 2-3-4 дерева.
Итак, я не уверен , где вы получили идею, что сбалансированные деревья не могут существовать во внутренней памяти, но я бы передумал, если бы я был вами.
И, на самом деле, вы можете поместить дерево AVL на диск, если вы так наклонены.
Я подозреваю, основываясь на комментариях, что вы может думать о является BTree который, как бинарное дерево, но каждый узел может содержать более одного значения и иметь более двух детей, таких как:
root node -,
|
V
+------+------+------+
| Val1 | Val2 | val3 |
+------+------+------+
/ | | \
<other nodes down here>
Это отличается от более общего термина «сбалансированное дерево», и они часто используются в дисковых ситуациях, вы, как правило, хотят, чтобы читать/писать целые блоки/кластеров/секторов в то время.
Итак, если вы можете поместить десять значений в блок диска, более эффективно использовать BTree (тогда как память не имеет понятия размера блока, поэтому может быть предпочтительнее использовать более простой алгоритм - BTrees должны сочетаться оба дерева поиска, чтобы найти узел и линейный/двоичный поиск, чтобы найти значение в узла).
Но, в то время как BTrees может быть типа сбалансированного дерева, это снова только один типа.
Если мы используем дерево AVL или RB в базе данных для индексации, то, очевидно, это будет тратить намного больше места, чем B-Tree. По этой причине только мы говорим, что B-дерево имеет хороший коэффициент затрат ввода-вывода, поскольку в нем содержится больше, чем много ключей в узле или блоке диска. ** Теперь для вычисления ЦП, есть ли разница в производительности? ** – anand011090
@ anand011090, да. Для BTree (который является только * одним типом сбалансированного дерева) требуется больше работы, потому что вам нужно использовать алгоритмы дерева, чтобы найти узел, в котором находится значение, затем либо линейный поиск, либо двоичный отбор, чтобы найти значение * внутри * узел. – paxdiablo
- 1. AVL Balanced Tree - печать последних 10 узлов
- 2. Java Heap Vs Balanced Tree
- 3. Balanced Quad Tree
- 4. AVL Tree Insert NullPointerExeption?
- 5. Сравнение Avl Tree и Red Black Tree
- 6. .NET Встроенный AVL-Tree?
- 7. AVL Tree: решение StackOverflowError
- 8. avl tree для обхода
- 9. self-balancing avl tree
- 10. AVL TREE REBALNCE
- 11. C++ AVL Tree Deletion
- 12. undefined reference AVL tree
- 13. AVL Tree Balancing
- 14. AVL Tree Insertion - Реализация
- 15. AVL tree balance
- 16. Succesor AVL tree C++
- 17. AVL Tree Rotation's
- 18. avl tree rotation
- 19. AVL Tree Balancing - C
- 20. AVL/Binary Search Tree
- 21. Что такое Splay tree, Red-black tree, AVL tree, B-tree и T-tree?
- 22. AVL tree Проблемы с вращением
- 23. Ошибка AVL Tree (in C)
- 24. Вставить значения в AVL Tree
- 25. AVL Tree find Ближайший ключ
- 26. AVL Tree Rebalancing в C++
- 27. AVL Tree Iterator в C
- 28. AVL tree perfect balancing issue
- 29. Log Structured Merge-tree vs Merkle tree
- 30. Tree Tree Tree Method
AVL-деревья также сбалансированы. И, очевидно, все, что работает во внешней памяти, все еще работает во внутренней памяти. – harold
Вы, очевидно, правы, их можно использовать, но почему сбалансированные деревья не предпочтительны для вычисления ЦП во внутренней памяти как деревья AVL? – anand011090