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

polevoy_cpp_2012_spring_lecture_11

.pdf
Скачиваний:
7
Добавлен:
20.04.2015
Размер:
204.11 Кб
Скачать

Послойно

• узел

корень

– указатель на первого ребенка

– указатель на

брата/родителя

– данные

21.04.2012

cppNewb.ru

61

Список ребер

узлы храним в массиве

ребро – пара индексов <родитель, ребенок>

ребра храним упорядоченно (по родителю)

21.04.2012

cppNewb.ru

62

Дерево (операции)

создание

уничтожение

добавление поддерева

удаление поддерева

навигация

изменение корня

21.04.2012

cppNewb.ru

63

Навигация по дереву

проверить наличие родителя

перейти к родителю

проверить наличие детей

перейти к ребенку

перейти к брату

перейти к корню дерева

21.04.2012

cppNewb.ru

64

Обход дерева

поиск заданного узла в дереве

получение списка всех узлов

« в ширину»

послойно, начиная от корня

« в глубину»

все потомки текущей вершины (для каждой)

21.04.2012

cppNewb.ru

65

Сбалансированное дерево

Высота двоичного дерева – максимальный уровень его листьев (-1 для пустого дерева).

Баланс узла – разность высот левого и

правого поддерева.

Сбалансированным бинарным деревом

является такое бинарное дерево, у которого абсолютное значение баланса каждого узла меньше или равно 1.

21.04.2012

cppNewb.ru

66

Баланс в дереве (иллюстрация)

 

 

3

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

1

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сбалансированное несбалансированное

21.04.2012

cppNewb.ru

67

Узел дерева (послойно)

struct STNode

{

STNode* m_pNext;

STNode* m_pChild;

T m_data;

};

21.04.2012

cppNewb.ru

68

Вставка поддерева (послойно)

 

21.04.2012

cppNewb.ru

69

Вставка поддерева (список детей)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21.04.2012

 

 

 

 

 

 

 

cppNewb.ru

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]