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

Практики(Вариант №1) / Практическая работа №5

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

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

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР) Кафедра безопасности информационных систем (БИС)

БИНАРНЫЕ ДЕРЕВЬЯ ПОИСКА Отчет по практической работе №5 по дисциплине «Структуры данных»

Студент гр.

________

__.__.2025

Принял

Преподаватель кафедры КИБЭВС

________ Е.Е. Лунева __.__.2025

Томск 2025

Задание

Реализовать бинарное дерево поиска при помощи динамических структур (классы). Предусмотреть следующие интерфейсные методы:

Инициализация пустого дерева.

Добавление элемента в дерево bool AddItem( int a) - возвращает true, если добавление прошло успешно, иначе false. Например, если такой элемент уже был в дереве - то метод вернет false.

Удаление элемента из дерева. bool RemoveItem(int a)

Очистка дерева void Clear()

Вывод дерева (используйте поиск в ширину) void Print() или string Print() Вариант 1. Реализуйте метод, находящий самый большой элемент в дереве.

2

 

Оглавление

Задание...................................................................................................................

2

Введение.................................................................................................................

4

1 ХОД РАБОТЫ....................................................................................................

5

Заключение.............................................................................................................

9

Приложение А......................................................................................................

10

3

Введение

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

4

1 ХОД РАБОТЫ

AddItem: Добавляет элемент в дерево. Если дерево пустое, элемент становится корнем, иначе вызывается рекурсивная вставка (рис. 1)

Рисунок 1 — AddItem

AddItemRecursive: Рекурсивно находит место для нового элемента, перемещаясь влево или вправо по дереву, в зависимости от значения элемента (рис. 2)

Рисунок 2 — AddRecursive

5

RemoveItem: Удаляет элемент из дерева. Вызывает рекурсивную функцию для поиска и удаления узла с заданным значением (рис. 3)

Рисунок 3 — RemoveItem

RemoveItemRecursive: Рекурсивно ищет элемент для удаления, перестраивая дерево в зависимости от наличия потомков у удаляемого узла (рис. 4)

Рисунок 4 — RemoveItemRecursive

6

Clear: Очищает дерево, удаляя все узлы, сбрасывая корень дерева (рис. 5)

Рисунок 5 — Clear

Print: Выводит элементы дерева в ширину, начиная с корневого узла и проходя по уровням дерева (рис. 6)

Рисунок 6 — Print

7

FindMaxRecursive: находит самый большой элемент в бинарном дереве поиска, последовательно перемещаясь по правым потомкам до достижения крайнего правого узла. (рис. 7)

Рисунок 7 — FindMaxRecursive

Текстовое описание реализации удаления элемента из дерева:

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

— это лист (у него нет потомков), его просто удаляют. Если у узла есть один потомок (левый или правый), узел заменяется этим потомком. Если у узла два потомка, находят наименьший элемент в правом поддереве (наименьший элемент больше удаляемого узла), копируют его значение в узел, который нужно удалить, а затем удаляют этот минимальный узел. После выполнения этих действий дерево остаётся упорядоченным (рис. 9,10,11)

8

Рисунок 9 — Удаление листа

Рисунок 10 — Удаление с 1 поддеревом

Рисунок 11 — Удаление с 2 поддеревьями

9

Заключение

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

10

Соседние файлы в папке Практики(Вариант №1)