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

Практическая работа №5

.pdf
Скачиваний:
0
Добавлен:
24.01.2025
Размер:
884.54 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-

вычислительных систем (КИБЭВС)

«Бинарные деревья» Отчет по практической работе №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