
- •Бинарные
- •Бинарное дерево
- •Виды бинарных
- •Идеально сбалансированные
- •Правило построения
- •Дерево поиска
- •Типовые операции над деревьями поиска:
- •Поиск по дереву с включением
- •Включение в дерево
- •Обход дерева
- •Обход дерева
- ••Begin
- •Удаление из дерева
- •Удаление узла, не имеющего потомков
- •Удаление узла с двумя потомками
- •Удаление узла (общий случай)
- •Правило удаления
- •Удаление узлов (общий случай) 13 15 10
- ••Procedure Delet (x:integer; Var p:ref);
- ••Begin
- •AVL (АВЛ)-деревья
- •AVL (АВЛ)-деревья
- •AVL (АВЛ)-деревья
- •AVL (АВЛ)-деревья
- •AVL (АВЛ)-деревья
- •AVL (АВЛ)-деревья
- •AVL (АВЛ)-деревья
- •Принцип роботи алгоритма
- •AVL (АВЛ)-деревья
- •Б-деревья
- •Б-деревья
- •Б-деревья
- •Б-деревья
- •Б-деревья
- •Алгоритм включення

•Procedure Delet (x:integer; Var p:ref);
•Var
•q : ref;
•Procedure Del (Var r:ref);
•Begin
• |
If r^.right<>Nil Then Del(r^.right) |
• |
Else |
• |
Begin |
• |
q^.key:=r^.key; |
• |
q:=r; r:=r^.left |
• |
End |
•End; {Del}
21

•Begin
•If p=Nil Then Writeln (‘Слова нет в дереве’)
•Else
•If x < p^.key Then Delet (x, p^.left)
•Else
•If x > p^.key Then Delet (x, p^.right)
•Else
•Begin { вилучення p^ }
•q:=p;
•If q^.right = Nil Then p:=q^.left
•Else
•If q^.left = Nil Then p:=q^.right
•Else
•Del (q^.left);
•End
•End; {Delet}
22

AVL (АВЛ)-деревья
(сбалансированные деревья поиска)
•Названные в честь их двух изобретателей Г.М. Адельсона- Вельского и Е.М. Ландиса
•АВЛ-балансировка по определению требует, чтобы для каждого узла дерева поиска высота его правого поддерева отличалась от высоты левого не более чем на единицу.
23

AVL (АВЛ)-деревья
24

AVL (АВЛ)-деревья
•Необходимо, чтобы для любой вершины AVL-дерева разность высот ее левого и
правого поддеревьев была по абсолютной
величине не больше единицы
•дополнительно в каждой вершине хранят разность между высотами левого и правого поддеревьев, которая в сбалансированном дереве может принимать только три значения: -1, 0, 1.
25

AVL (АВЛ)-деревья
•Type
•ref = ^node;
•node = Record
• |
key : integer; |
• |
............... |
• |
left,right : ref; |
• |
bal : -1..+1 |
• |
End; |
• |
принимать только три значения: -1, 0, 1. |
26

AVL (АВЛ)-деревья
•Показатель сбалансирования – разница между высотами левого и правого поддерева
дерева поиска
А 1. hl = hr bal=+1 L R 2. hl < hr bal= 0
3. hl > hr bal= 2
27

AVL (АВЛ)-деревья
Пpоцес включения узла состоит из 3 этапов:
•1. Прямувати по шляху пошуку, поки не з’ясується, що ключа немає у деpеві;
•2. Включити новий вузол і визначити новий показник збалансованості;
•3. Пpойти назад по шляху пошуку і пеpевіpити показник збалансованості кожного вузла.
28

AVL (АВЛ)-деревья
Опеpации сбалансивания деpева складываются из обмена значениями указателей. Пpи этом указатели обмениваются по кругу ( однокpатный “повоpот” двух или тpьох узлов.) Кpоме “поворота” указателей заменяются соответствующие показатели сбалансованности узлов.
•LL
•RR
•RL
•LR
29

Принцип роботи алгоритма
30