Base/Knowledges/IT/Структуры данных/АВЛ-дерево (AVL-tree).md
2026-02-23 19:52:05 +03:00

67 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#структураанных
![[Pasted image 20250115090212.png]]
> АВЛ-деревья являются деревьями BST, которые балансируют себя с помощью поворотов; это гарантирует, что их высота будет равна $O(log(n))$
АВЛ-деревья составляют разновидность самобалансируемых [[Бинарное дерево поиска (Binary Search Tree - BST)]]. Это означает, что АВЛ-деревья сохраняют высоту $O(log(n))$.
АВЛ-дерево обеспечивает нужную высоту O(log n), которая достигается
самобалансировкой и поворотами.
Аббревиатура АВЛ образована от фамилий ученых, придумавших эту структуру: Адельсон-Вельский и Ландис
***
## Поворот дерева
![[Pasted image 20250115090415.png]]
Дерево не сбалансировано — одна сторона длиннее другой.
Мы выполняем поворот влево, начиная с несбалансированного дерева
с корневым узлом A и заканчивая сбалансированным деревом с корневым
узлом B.
После поворота АВЛ-деревья сами перебалансируются
Чтобы дерево знало, когда требуется самобалансировка, оно должно хра-
нить дополнительную информацию. В каждом узле хранится один или два
вида информации: значение высоты или значение, которое иногда называют
коэффициентом балансировки. Этот коэффициент должен быть равен 1,
0 или 1.
![[Pasted image 20250115090550.png]]
Коэффициент балансировки сообщает, какой дочерний узел выше и на-
сколько. По коэффициенту балансировки дерево может определить, когда
следует проводить перебалансировку. Значение 0 означает, что дерево
сбалансировано. Со значениями 1 или 1 тоже все нормально, потому что,
напомним, АВЛ-деревья не обязаны быть идеально сбалансированы: раз-
ность 1 допустима.
Но если коэффициент балансировки падает ниже 1 или поднимается
выше 1, дерево нуждается в перебалансировке.
![[Pasted image 20250115090706.png]]
### Пример
при добавлении узла 2
![[Pasted image 20250115090829.png]]
после балансировки
![[Pasted image 20250115090921.png]]
АВЛ-деревья хороши, если требуется сбалансированное дерево BST
Связанные темы:
- [[Дерево (Tree)]]
- [[Бинарное дерево поиска (Binary Search Tree - BST)]]
- [[Бинарное дерево (Binary tree)]]
- [[Граф (Graph)]]
Источники:
- [[Адитья Бхаргава - Грокаем Алгоритмы]]