Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
72
Добавлен:
06.06.2015
Размер:
359.86 Кб
Скачать

Лекция 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

Прямой Обратный Внутренний