3.5 KiB
#структура_данных
АВЛ-деревья являются деревьями BST, которые балансируют себя с помощью поворотов; это гарантирует, что их высота будет равна
O(log(n))
АВЛ-деревья составляют разновидность самобалансируемых Бинарное дерево поиска (Binary Search Tree - BST). Это означает, что АВЛ-деревья сохраняют высоту O(log(n)).
АВЛ-дерево обеспечивает нужную высоту O(log n), которая достигается самобалансировкой и поворотами.
Аббревиатура АВЛ образована от фамилий ученых, придумавших эту структуру: Адельсон-Вельский и Ландис
Поворот дерева
!
Дерево не сбалансировано — одна сторона длиннее другой.
Мы выполняем поворот влево, начиная с несбалансированного дерева с корневым узлом A и заканчивая сбалансированным деревом с корневым узлом B.
После поворота АВЛ-деревья сами перебалансируются
Чтобы дерево знало, когда требуется самобалансировка, оно должно хра- нить дополнительную информацию. В каждом узле хранится один или два вида информации: значение высоты или значение, которое иногда называют коэффициентом балансировки. Этот коэффициент должен быть равен –1, 0 или 1.
Коэффициент балансировки сообщает, какой дочерний узел выше и на- сколько. По коэффициенту балансировки дерево может определить, когда следует проводить перебалансировку. Значение 0 означает, что дерево сбалансировано. Со значениями –1 или 1 тоже все нормально, потому что, напомним, АВЛ-деревья не обязаны быть идеально сбалансированы: раз- ность 1 допустима. Но если коэффициент балансировки падает ниже –1 или поднимается выше 1, дерево нуждается в перебалансировке.
Пример
при добавлении узла 2
!
после балансировки
!
АВЛ-деревья хороши, если требуется сбалансированное дерево BST
Связанные темы:
- Дерево (Tree)
- Бинарное дерево поиска (Binary Search Tree - BST)
- Бинарное дерево (Binary tree)
- Граф (Graph)
Источники:


