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

Семестр 2 / Алгоритмизация Практика 13 язык С

.pdf
Скачиваний:
82
Добавлен:
07.05.2020
Размер:
214.8 Кб
Скачать

Алгоритмизация и программирование – семестр 2

Практическое занятие № 13 « Бинарное дерево»

Бинарные поисковые деревья (binary search tree - BST) - разновидность двоичного дерева. Особенность двоичного поискового дерева в том, что все значения располагаются в нем в отсортированном порядке. В общем случае значения узлов необязательно должны подвергаться сортировке перед вставкой в бинарное поисковое дерево. Узлы вставляются в такое дерево в

произвольном порядке, а сама сортировка происходить в процессе вставки.

Построение дерева

Бинарное поисковое дерево строится по следующим правилам:

1.У каждого узла не более двух детей.

2.Любое значение меньше значения данного узла становится его левым потомком или потомком его левого потомка .

3.Любое значение больше или равное значению данного узла становится его правым

потомком или потомком его правого потомка .

Пример. Построим по этим правилам дерево со значениями узлов: 8, 4, 2, 3, 10, 6, 7. Вначале дерево было пустым.

Первое добавленное значение 8 стало его корнем.

Каждое следующее значение слева от корня (8) будет меньше него, каждое значение справа — больше либо равно корню. Это правило применимо к любому узлу дерева.

Теперь добавим 4.

Поскольку 4 < 8, вставим ее левым потомком, согласно правилу 2. Поскольку у узла с 8 нет детей слева, 4 становится единственным левым потомком.

После добавим следующее значение 2.

2 < 8, поэтому идем налево. Так как слева уже есть потомок(4), сравниваем его со вставляемым. 2 < 4, а у 4 нет потомков слева, поэтому 2 становится левым потомком 4.

Затем добавим 3.

Она идет левее 8 и 4. Но так как 3 > 2, она становится правым потомком 2, согласно третьему правилу.

И т.д.

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

Очевидно, форма дерева будет зависеть от порядка вставки элементов.

Бонусное задание 1 (0,5 балла).

Постройте несколько вариантов дерева (не менее 2) с этим набором данных в различном порядке следования. Результат приведите в Отчете.

Визуализатор бинарного дерева: https://www.cs.usfca.edu/~galles/visualization/BST.html

Задания:

В программе инициализировать бинарное поисковое дерево и организовать выполнение действий:

1. (0,5 балла). Добавить узел.

Практическоезанятие№13

Страница1

Алгоритмизация и программирование – семестр 2 Построить дерево (например: 8; 4; 2; 3; 10; 6; 7, …). Всего 10 узлов.

2. (0,5 балла). Заменить узел.

Найти нужный (по значению) узел; вместо него вставить новый узел (значение в узле задает пользователь).

3. (0,5 балла). Удалить узел.

Удалить нужный (по значению) узел.

4.(0,5 балла). Печать.

Вывод на печать узлов дерева.

Бонусное задание 2 (0,5 балла).

Посчитать и напечатать количество узлов дерева, являющихся левыми дочерними (корень дерева не учитывать). Привести результаты для двух вариантов дерева.

Бонусное задание 3 (0,5 балла).

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

Требования к заданию:

Выполнение действий в задании организовать в формате интерфейс-меню.

В отчете привести результаты работы программы для всех пунктов меню (вывод на печать). Выполняется в течении 1 занятия:

Максимальная оценка – 2 балла (3,5 с Бонусами).

Практическоезанятие№13

Страница2