Алгоритмизация и программирование – семестр 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 |