Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дин_память_Бинарные_деревья_осень_2013.doc
Скачиваний:
35
Добавлен:
08.04.2015
Размер:
115.71 Кб
Скачать

12

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

Кроме линейных структур существуют и нелинейные, при помощи которых задаются иерархические связи данных. Для этого используются графы, а среди них сетевые и древовидные структуры. Рассмотрим один вид деревьев - бинарное дерево.

Б

инарное (двоичное) дерево - это конечное множество элементов, которое либо пусто, либо содержит один элемент, называемый корнем дерева, а остальные элементы множества делятся на два непересекающихся подмножества, каждое из которых само является бинарным деревом. Эти подмножества называются правым и левым поддеревьями исходного дерева.

Рис. 23 Двоичное дерево

На рис. 23 показан наиболее часто встречающийся способ представления бинарного дерева. Оно состоит из девяти узлов. Корнем дерева является узел А. Левое поддерево имеет корень В, а правое поддерево - корень С. Они соединяются соответствующими ветвями, исходящими из А. Отсутствие ветви означает пустое поддерево. Например, у поддерева с корнем С нет левого поддерева, оно пусто. Пусто и правое поддерево с корнем Е. Бинарные поддеревья с корнями D,G,HиIимеют пустые левые и правые поддеревья. Узел, имеющий пустые правое и левое поддеревья, называется листом. Если каждый узел бинарного дерева, не являющийся листом, имеет непустые правое и левое поддеревья, то дерево называется строго бинарным

Уровень узла в бинарном деревеопределяется следующим образом:уровень корня всегда равен нулю, а далее номера уровней при движении по дереву от корня увеличиваются на 1 по отношению к своему непосредственному предку.Глубина бинарного дерева- этомаксимальный уровень листа дерева,иначе говоря, длина самого длинного пути от корня к листу дерева.

Узлы дерева могут быть пронумерованы по следующей схеме (см. рис. 24)

Рис. 24 Схема нумерации узлов двоичного дерева

Номер корня всегда равен 1, левый потомок получает номер 2, правый - номер 3. Левый потомок узла 2 должен получить номер 4, а правый - 5, левый потомок узла 3 получит номер 6, правый - 7 и т.д. Несуществующие узлы не нумеруются, что, однако, не нарушает указанного порядка, так как их номера не используются.При такой системе нумерации в дереве каждый узел получает уникальный номер. Использование нумерации при решении задач.

Полное бинарное дерево уровня n- это дерево, в котором каждый узел уровняnявляется листом и каждый узел уровня меньшеnимеет непустые правое и левое поддеревья.

Почти полное бинарное деревоопределяется как бинарное дерево, для которого существует неотрицательное целоеkтакое, что:

  1. каждый лист в дереве имеет уровень kилиk+1;

  2. если узел дерева имеет правого потомка уровня k+1, тогда все его левые потомки, являющиеся листами, также имеют уровеньk+1.

Действия с бинарными деревьями.

Рассматривая действия над деревьями, можно сказать, что для построения дерева необходимо

  • сформировать узел,

  • определить место включения,

  • включить узел в дерево.

Количество узлов определяется необходимостью. Алгоритм включения должен быть известен и постоянен. Узлы дерева могут быть использованы для хранения какой-либо информации.

Далее необходимо осуществлять поиск заданного узла в дереве. Это можно организовать, например, последовательно обходя узлы дерева, причем каждый узел должен быть просмотрен только один раз.

Может возникнуть задача и уничтожения дерева(освобождения памяти, занятой им) в тот момент, когда необходимость в нем (в информации, записанной в его элементах) отпадает. В ряде случаев может потребоваться уничтожение поддерева.

Для того, чтобы совокупность узлов образовала дерево, необходимо определенным образом формировать и использовать связи узлов со своими предками и потомками. По смыслу всё это (технология работы с адресами, ссылками) аналогично действиям над элементами списка.