
- •Лекция 11, 12
- •План лекции
- •Дерево
- •Подерево, лес
- •Высота дерева
- •Бинарное (двоичное) дерево
- •Полное бинарное дерево
- •Обходы деревьев
- •Обходы в глубину
- •Обходы в глубину дерева
- •Обход деревьев в ширину
- •Пример обхода дерева в ширину b
- •Бинарное дерево -- операции
- •Представление бинарных
- •Пример представления с помощью массива
- •Скобочное представление деревьев
- •Пример скобочного представления неориентированногоb дерева
- •Пример печати левого скобочного представления
- •Представление дерева списком прямых предков
- •Дерево двоичного поиска
- •Примеры ДДП
- •Поиск в дереве двоичного поиска
- •Сбалансированные деревья АВЛ
- •Сбалансированные деревья АВЛ
- •Вставка вершины в АВЛ дерево
- •Вставка вершины в АВЛ дерево
- •Разгрузка левой-левой ветки
- •Разгрузка правой-левой
- •Оптимизация вставки в АВЛ- дерево
- •Одинарный поворот
- •Двойной поворот
- •Пример поворота
- •Пример построения АВЛ- дерева
- •Заключение

Лекция 11, 12
ДЕРЕВЬЯ

План лекции
Дерево, поддерево и др. определения
Обходы деревьев
Представление деревьев
Дерево двоичного поиска
АВЛ деревья

Дерево
Ориентированным деревом Т называется ориентированный граф G = (А,R) со специальной вершиной r А, называемой корнем, у которого
степень по входу вершины r равна 0,
степень по входу всех остальных вершин равна 1,
каждая вершина а А достижима из r.
Базовые свойства деревьев
Дерево не содержит циклов
Каждая вершина дерева соединяется с его корнем единственным путём

Подерево, лес
Поддеревом дерева Т = (А, R) называется такое дерево T' =(А', R'), что
А' непусто и содержится в A
R' = (A'хA') R
все потомки вершин из множества А' принадлежат множеству А‘
Ориентированный граф, состоящий из нескольких деревьев, называется лесом
1 |
3
6 7 8

Высота дерева
Пусть Т=(A, R) – дерево, (a, b) R, тогда a – отец b, а b – сын a.
Глубина или уровень вершины – длина пути от корня до этой вершины.
Высота вершины – длина максимального пути от этой вершины до листа.
Высота дерева – длина максимального пути от корня до листа.
1
2 3
4 |
5 |
6 |
7 |
8 |
910
Глубина корня = 0.

Бинарное (двоичное) дерево
|
|
|
1 |
|
Упорядоченное дерево – |
|
|
|
|
это дерево, в котором |
|
2 |
|
3 |
множество сыновей |
|
|
||
|
|
|
|
|
каждой вершины |
|
|
|
|
упорядочено |
4 |
5 |
|
6 |
|
|
|||
Бинарное дерево – это |
|
|
|
|
упорядоченное дерево, в |
|
|
|
|
котором каждая вершина |
|
8 |
7 |
9 |
имеет не более двух |
|
|
|
|
сыновей

Полное бинарное дерево
Бинарное дерево называется полным, если существует некоторое целое k, такое что любая вершина глубины
меньше k имеет как левого, так и |
||||
правого сына, а если узел имеет |
||||
глубину k, то он является1листом |
||||
Сколько |
|
|
|
|
вершин |
|
2 |
|
3 |
содержит |
|
|
|
|
полное |
4 |
5 |
6 |
7 |
бинарное |
|
|||
дерево |
|
|
|
|
высоты k? 8 |
|
9 10 11 |
12 |
13 14 15 |

Обходы деревьев
Обход дерева – это способ перечисления (нумерации) вершин дерева, при котором каждая вершина получает единственный номер
в глубину
Обходы
в ширину

Обходы в глубину
Пусть T – дерево, r - корень, v1, v2, …, vn – сыновья вершины r
Прямой (префиксный) обход
Пронумеровать (посетить) корень r
Пронумеровать в прямом порядке поддеревья с корнями v1, v2,…, vn
Обратный (постфиксный) обход
Пронумеровать в обратном порядке поддеревья с корнями v1, v2,…, vn
Пронумеровать корень r
Внутренний ( инфиксный) обход для бинарных деревьев
Пронумеровать во внутреннем порядке левое поддерево корня r (если существует)
Пронумеровать корень r
Пронумеровать во внутреннем порядке правое поддерево корня r (если существует)

|
Примеры обходов дерева в |
||||
|
глубину |
|
1 |
|
5 |
|
1 |
|
|
||
|
|
|
0 |
|
|
2 |
6 |
4 |
9 |
1 |
7 |
|
|
|
|
|
3 |
7 |
8 |
3 |
5 |
8 |
3 |
6 |
10 |
4 |
5 |
9 |
1 |
2 |
7 |
2 |
4 |
8 |
|
10 |
6 |
9 |
Прямой Обратный Внутренний