Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_TRPO / 7_8_BinTree1_lec.doc
Скачиваний:
54
Добавлен:
12.03.2015
Размер:
532.48 Кб
Скачать

5. Бинарные деревья

Связный граф без циклов называется деревом. Дерево – это сложная динамиче­ская структура данных, применяющаяся для эффективного хранения информа­ции.

Упорядоченное дерево – это дерево, у которого ребра (ветви), исходящие из каждой вершины, упорядочены.

Корневое дерево – дерево, в котором одна вершина выделена и называется корнем.

Двоичное (бинарное) корневое дерево – это дерево, в котором из каждой вер­шины исходит не более двух ребер (рис. 5.1). Иногда бинарное дерево (БД) опреде­ляют рекурсивно: БД – это конечное множество узлов (вер­шин), которое либо пусто, либо со­стоит из корня (вершины) с двумя отдельными БД, которые называ­ются левым и правым поддеревом этого корня. Далее будем иметь дело только с БД, поэтому если мы говорим дерево, то это означает БД.

Вершина y, находящаяся непосредственно ниже вершины x, называется непо­средственным потомком x, а вершина x называется предком y.

Если вершина не имеет потомков, то она называется терминальной верши­ной или листом, если имеет, то называется внутренней вершиной.

Уровень–характеризует расстояние до корня. Считается, что корень дерева находится на уровне 0. Максимальный уровень какой-либо из вершин дерева называ­ется его глубиной или высотой.

Применение. Организация данных с помощью бинарных деревьев часто позво­ляет значительно сократить время поиска нужного элемента. Поиск элемента в линей­ных структурах данных обычно осуще­ствляется путем последовательного перебора всех элементов, присутствующих в данной структуре. Поиск по дереву не тре­бует перебора всех элементов, поэтому занимает значительно меньше времени. Мак­симальное число шагов при поиске по дереву равно высоте данного дерева, т.е. ко­личеству уровней в иерархической структуре дерева.

Представление деревьев. Наиболее часто используются следующие представле­ния деревьев.

1. Списочная структура.

2. Упакованный массив.

3. Польская запись.

Рассмотрим представление дерева в виде списочной структуры. Деревья относятся к разряду структур, которые удобно строить в динамической памяти с использованием указателей. Вершина де­рева будет описана следующим образом:

Tyрe u = ^uzl;

uzl = Record {запись – вершина }

i :Tinf; { поле информации }

L, R :u; { указатели на правое и левое поддеревья}

End;

Var h :u; { указатель на корень дерева}

Ссылки на пустые деревья будут обозначаться значением Nil. Тогда БД можно построить с помощью следующей рекурсивной процедуры:

Procedure TCreate (Var t:u );

Begin

Inc(k);

If s[k]<>'.'

Then Begin

New(t); t^.i:=s[k];

TCreate (t^.L); TCreate (t^.R);

End

Else t := Nil;

End;

{ Головная программа }

Begin

s := 'ABD...CE.G..FH..J..'; {описание дерева на рис.5.1 - входной поток }

k:=0;

T1(h);

……

End;

Структура дерева отражается во входном потоке данных: каждой вводимой пустой связи соответствует условный символ (в данном случае точка).

Соседние файлы в папке Lektsii_TRPO