
Практическая работа №5
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
«Бинарные деревья» Отчет по практической работе №5
по дисциплине «Структуры данных»
Студент гр. 723-1
_________Лысенко Е.М.
__________
Принял Ст. преподаватель кафедры КИБЭВС
________ Лунѐва Е.Е.
__________
Томск 2024
Задание
Реализовать бинарное дерево поиска при помощи динамических
структур (классы). Предусмотреть следующие интерфейсные методы:
Инициализация пустого дерева;
Добавление элемента в дерево bool AddItem(int a) – возвращает
true, если добавление прошло успешно, иначе false. Например, если такой
элемент уже был в дереве, то метод вернет false;
Удаление элемента из дерева – bool RemoveItem(int a);
Очистка дерева void Clear();
Вывод дерева (используйте поиск в ширину) void Print() или
string Print().
Вариант 3. Реализуйте метод, находящий 2 самых больших элемента в
дереве.
2
Содержание
Введение................................................................................................................... |
4 |
|
1 ХОД РАБОТЫ ...................................................................................................... |
5 |
|
1.1 |
Класс Node ...................................................................................................... |
5 |
1.2 |
Класс Tree ....................................................................................................... |
5 |
Заключение ............................................................................................................ |
11 |
|
Приложение А ....................................................................................................... |
12 |
3
Введение
Целью работы является получение навыков реализации бинарного
дерева поиска и разработки алгоритмов взаимодействия с ними на языке
программирования C#.
4

1 ХОД РАБОТЫ
В ходе работы было реализовано бинарное поисковое дерево при помощи двух классов: Node и Tree.
1.1 Класс Node
Класс Node – элементы списка – содержит поля data (иинформация об элементе) и Left (данные о элементе, находящемся слева), Right (данные о элементе, находящемся справа), Parent (данные о элементе родителе),
конструктор.
Рисунок 1.1 – Реализация класса Node
1.2 Класс Tree
Класс Tree – реализация работы с бинарным поисковым деревомй – содержит поле Root (корень дерева).
Рисунок 1.2 – Поля и конструкторы класса Tree
5

Метод AddItem добавляет новый узел в дерево (рисунок 1.3).
Рисунок 1.3 – Метод AddItem класса Tree
Метод Contains возвращает элемент, если он есть в дереве (рисунок
1.4).
Рисунок 1.4 – Метод Contains класса Tree
6

Метод RemoveItem удаляет элемент из дерева. Если он удален, то
возвращает true, наоборот – false (рисунок 1.5).
Рисунок 1.5 – Метод RemoveItem класса Tree
7

У удаляемого узла нет левого и правого поддерева. В данной ситуации просто удаляется данный узел (рисунок 1.6).
Рисунок 1.6 – Удаление листа дерева
При удалении узла, у которого есть только одно поддерево, удаляется данный узел, а на его место ставится поддерево.
Рисунок 1.7 – Удаление узла дерева
При удалении узла, у которого есть оба поддерева, удаляется данный элемент, а на его место ставим либо самый правый элемент его левого поддерева, либо самый левый его правого поддерева.
8

Рисунок 1.8 – Удаление узла дерева
Метод FindMin возвращает наименьший элемент дерева (рисунок 1.9).
Рисунок 1.9 – Метод FindMin класса Tree
Метод FindMax возвращает наибольший элемент дерева (рисунок 1.10).
Рисунок 1.10 – Метод FindMax класса Tree
Метод Clear очищает дерево (рисунок 1.11).
9

Рисунок 1.11 – Метод Clear класса Tree
Метод Print выводит дерево, используя поиск вширину (рисунок 1.12).
Рисунок 1.12 – Метод Print класса Tree
Метод MaxTwice возвращает два максимальных элемента дерева
(рисунок 1.13).
Рисунок 1.13 – Метод MaxTwice класса Tree
10