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

Виды бинарных
деревьев
1.Идеально сбалансированное бинарное дерево
2.Дерево поиска
3.Сбалансированное АВЛ дерево
21

Идеально сбалансированные
деревья
•Дерево идеально сбалансированное, если для каждого узла количество узлов в левом и правом поддеревьях отличаются не больше одного.
22

Правило построения
Правило равномерного распределения при
известном количестве числа узлов n , которые формируются с помощью рекурсии:
• 1. Взять один узел как корень.
• 2. Построить левое поддерево из nl = n div 2 узлов тем же способом.
• 3. Построить правое поддерево из nr = n-nl-1 узлов тем же способом.
23

• Пример: входные данные для дерева из п = 21 узла:
8 |
9 11 15 19 |
20 21 |
7 |
3 |
2 1 |
5 6 |
4 |
13 14 10 12 |
17 16 18 |
|
nl = n div 2 |
|
|
nr = n-nl-1 |

•Uses Crt;
•Type
•ref=^node;
•node=Record
• |
key : integer; |
• |
left : ref; |
• |
right : ref; |
• |
End; |
•Var
•n : integer;
•root :ref;
25

26

•Procedure PrintTree (t:ref; h:integer);
•Var
•i : integer;
•Begin
•If t <> Nil Then
•With t^ Do
•Begin
•PrintTree (right, h+1);
• |
For i:=1 To h Do Write (‘ ‘); |
•Writeln (key);
•PrintTree (left, h+1)
•End
•End; {PrintTree}
27

•Begin
•ClrScr;
•Writeln (‘Введіть кількість вузлів’);
•Readln (n);
•root:=Tree(n);
•Writeln (‘Побудоване дерево’);
•PrintTree(root,0);
•Repeat Until KeyPressed;
•End.
28

Дерево поиска
1.Растущая структура
2.Двоичное дерево поиска может быть либо пустым, либо оно обладает таким свойством, что корневой элемент имеет большее значение узла, чем любой элемент в левом поддереве, и меньшее (или равное), чем элементы в правом поддереве. Указанное свойство называется характеристическим свойством двоичного дерева поиска и
выполняется для любого узла такого дерева, включая корень.
29
