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

Практика 5(СД)

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

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

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

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

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

БИНАРНЫЕ ДЕРЕВЬЯ ПОИСКА Отчёт по практической работе №5

по дисциплине «Структуры данных»

Студент гр. 714-1

_______ И.С. Максимов

__.__.2025

Доцент кафедры КИБЭВС

_______ Е.Е. Лунёва

__.__.2025

Томск 2025

 

Оглавление

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

3

1. Ход работы ....................................................................................................

4

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

9

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

10

2

Введение

Целью данной работы является реализация бинарного дерева поиска с

использованием динамических структур.

По отчету: недочет, нет вводного абзаца, с описание структуры классов. Рисунки нумерация не по ОС ТУСУР (сквозная, а нужно с привязкой к номеру раздела)

3

1. Ход работы

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

Рисунок 1 — Метод AddItem

AddRecursive: рекурсивно находит место для нового элемента,

перемещаясь влево или вправо по дереву, в зависимости от значения элемента

(рис. 2)

Рисунок 2 — Метод AddRecursive

4

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

Рисунок 3 — Метод RemoveItem

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

Рисунок 4 — Метод RemoveRecursive

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

Рисунок 5 — Метод Clear 5

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

Рисунок 6 — Метод Print

FindMax: находит и возвращает максимальный элемент дерева, проходя по правым потомкам до конца (рис. 7)

Рисунок 7 — Метод FindMax

6

FindMinNode: находит и возвращает минимальный элемент дерева. Для этого проходит по левым потомкам, начиная от корня, до самого крайнего левого кеузла, который и является минимальным элементом (рис. 8)

Рисунок 8 – Метод FindMinNode

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

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

7

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

Рисунок 11 – Удаление при двух поддеревьях

8

Заключение

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

9

Приложение А

Листинг кода: using System;

// Класс узла бинарного дерева class TreeNode

{

public int Data;

// Значение узла

public TreeNode Left;

 

// Левый потомок

public TreeNode Right;

// Правый потомок

// Конструктор инициализирует узел с заданным значением, дети пусты public TreeNode(int data)

{

Data = data;

Left = null;

Right = null;

}

}

// Класс узла для собственной очереди обхода дерева class QueueNode

{

10

Соседние файлы в предмете Структуры данных