Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 сем / лаб3.docx
Скачиваний:
0
Добавлен:
06.06.2025
Размер:
57.05 Кб
Скачать

Минобрнауки России

Санкт-петербургский государственный

Электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра вычислительной техники

Отчёт

Лабораторная работа №3

По дисциплине «АиСД»

Тема: деревья

Студент гр. 3316

Руденский И.М.

Преподаватель

Манирагена Валенс

Санкт-Петербург

2024

Постановка задачи

Цель работы: исследование алгоритмов для работы с двоичным деревом.

Задание на обработку:

18

Двоичное

Ширинная

Внутрен­ний

Количество вершин на самом нижнем уровне

Обоснование выбора представления в памяти:

1) Дерево строится динамически, и узлы добавляются по мере необходимости.

Не требуется заранее резервировать память для фиксированного количества элементов, это особенно важно для структур, где размер заранее неизвестен.

2) Указатели позволяют эффективно связать узлы:

Каждый узел знает о своих потомках через указатели left и right, связи между узлами интуитивны и легко поддерживаются.

3) Универсальность структуры: можно представить любые виды двоичных деревьев: двоичное дерево поиска, двоичное дерево с балансировкой, полное двоичное дерево и т.д.

4) Читаемость и модульность кода:

Разделение логики узлов и самого дерева упрощает реализацию. Логика вставки, обхода, разметки находится в классе BinaryTree, что делает её легко расширяемой.

5) Эффективное использование памяти: каждый узел хранит только свои данные и два указателя. Нет дополнительных структур, которые могли бы увеличивать накладные расходы.

Ход работы

1) Пример со случайными числами:

2) Пример со вводом с клавиатуры:

Таблица сложностей алгоритмов:

Операция

Временная сложность

Добавление узла (insert)

O(log n) — лучший случай O(n) — худший случай

Генерация дерева

O(n log n) — лучший случай O(n^2) — худший случай

Внутренний обход

O(n)

Ширинный обход

O(n)

Печать дерева

O(n)

Разметка дерева (ширинная)

O(n)

Подсчёт узлов на нижнем уровне

O(n)

Выводы о результатах испытания алгоритмов

В результате испытаний алгоритмы обхода деревьев показали свою эффективность для выполнения задач поиска, сортировки и обработки узлов. Внутренний обход (in-order) доказал свою полезность при работе с бинарными деревьями поиска, так как он позволяет обойти узлы в отсортированном порядке. Ширинный обход (по уровням) оказался удобен для задач визуализации и обработки узлов в порядке их удаления от корня. Алгоритмы имеют линейную временную сложность относительно числа узлов, что подтверждает их пригодность для работы с деревьями большого размера. Использование рекурсивных методов для обхода в глубину обеспечивает лаконичность кода, однако может приводить к увеличению расхода памяти при работе с глубоко вложенными деревьями.

Соседние файлы в папке 3 сем