пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Динамические структуры данных (ДСД). Дерево. Определение, примеры. Основные понятия, ботаническая и иерархическая нотации. Понятие бинарного дерева. Задачи, приводящие к понятию бинарного дерева. Двоичные деревья поиска, их построение. Обход дерева.

Строение ДСД: набор узлов, объединенных с помощью ссылок. Вид узла: Данные+ссылки на другие узлы. Типы структур: Списки, деревья, графы.

 

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

Корень – это начальный узел дерева.

Лист – это узел, из которого не выходит ни одной дуги.

 

Основные понятия:

Предок узла x – это узел, из которого существует путь по стрелкам в узел x.

Потомок узла x – это узел, в который существует путь по стрелкам из узла x.

Родитель узла x – это узел, из которого существует дуга непосредственно в узел x.

Сын узла x – это узел, в который существует дуга непосредственно из узла x.

Брат узла x (sibling) – это узел, у которого тот же родитель, что и у узла x.

Высота дерева – это наибольшее расстояние от корня до листа (количество дуг).

Ключ – это характеристика узла, по которой выполняется поиск (чаще всего – одно из полей структуры).

Как искать ключ, равный x:

1)если дерево пустое, ключ не найден;

2)если ключ узла равен x, то стоп.

3)если ключ узла меньше x, то искать x в левом поддереве;

если ключ узла больше x, то искать x в правом поддереве

Рекурсивное определение:

1.Пустая структура – это дерево.

2.Дерево – это корень и несколько связанных с ним деревьев.

Двоичное (бинарное) дерево – это дерево, в котором каждый узел имеет не более двух сыновей.

1.Пустая структура – это двоичное дерево.

2.Двоичное дерево – это корень и два связанных с ним двоичных дерева (левое и правое поддеревья).

Применение:

1)поиск данных в специально построенных деревьях

(базы данных);

2)сортировка данных;

3)вычисление арифметических выражений;

4)кодирование (метод Хаффмана).

type PNode = ^Node;        { указатель на узел }

            Node = record

            data: integer;   { полезные данные }

            left, right: PNode; { ссылки на левого и правого сыновей }

            end;

Обход дерева – это перечисление всех узлов в определенном порядке.(ЛКП, ПКЛ, КЛП, ЛПК)

{Процедура LKP – обход дерева в порядке ЛКП (левый – корень – правый)

 Вход: Tree - адрес корня }

procedure LKP(Tree: PNode);

begin

 if Tree = nil then Exit;

 LKP(Tree^.left);

 write(' ', Tree^.data);

 LKP(Tree^.right);

end;

23.           


22.01.2015; 17:48
хиты: 179
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь