5-Алгоритмизация и программировани / Алгоритмиз и прогр БИСЗУ11 / Лабораторные работы / Лабораторная работа4 Деревья / Задание Лабораторная работа4
.docЛабораторная работа №4
Бинарные деревья.
Цель работы: изучение принципов организации и обработки бинарных деревьев.
Постановка задачи.
Выполнить задание в соответствии с вариантом. Для решения поставленной задачи разработать и использовать шаблон класса «Бинарное дерево поиска».
Для оценки «удовлетворительно».
Шаблон класса «Бинарное дерево поиска» должен включать в себя необходимый минимум методов, обеспечивающий полноценное функционирование объектов указанного класса, а именно:
-
конструктор по умолчанию;
-
конструктор копирования;
-
деструктор;
-
добавление узла;
-
удаление узла;
-
поиск узла с заданным значением ключа;
Используя механизм перегрузки стандартных операций, реализовать:
-
вывод дерева на экран в удобном для восприятия человеком виде;
-
ввод данных в дерево с клавиатуры;
-
сравнение двух деревьев;
-
присваивание данных одного дерева другому дереву.
Для оценки «хорошо».
Дополнить разработанный класс следующими функциональными возможностями:
-
прямой обход дерева (корень, левое поддерево, правое поддерево);
-
обратный обход дерева (левое поддерево, корень, правое поддерево);
-
концевой обход дерева (левое поддерево, правое поддерево, корень).
-
вывод дерева в файл в удобном для восприятия человеком виде;
-
ввод данных в дерево из файла;
Для оценки «отлично».
На базе разработанного класса «Бинарное дерево поиска», реализовать производный класс «Сбалансированное бинарное дерево», добавив показатель балансировки для узлов дерева и метод, выполняющий при необходимости повторную балансировку дерева.
Варианты заданий.
Вариант №1.
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Определить уровень узла с минимальным элементом.
Вариант №2.
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Вывести на экран значения в узлах, лежащих на пути от корня до узла с максимальным элементом.
Вариант №3.
Из входной последовательности целых чисел построить бинарное дерево поиска. Определить уровень узла, содержащего число с минимальной суммой цифр.
Вариант №4.
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Вывести на экран значения в тех узлах, которые лежат на одном уровне с элементом, заданным пользователем.
Вариант №5.
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Вывести на экран значения в тех узлах, которые имеют уровень, заданный пользователем.
Вариант №6.
Из входной последовательности целых чисел построить бинарное дерево поиска. Вывести на экран значения всех листьев дерева.
Вариант №7.
Из входной последовательности вещественных чисел построить бинарное дерево поиска и определить его глубину.
Вариант №8.
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Определить среднее арифметическое значений в тех узлах, которые имеют заданный пользователем уровень.
Вариант №9.
Из входной последовательности целых чисел построить бинарное дерево поиска. Определить сумму значений тех листьев дерева, которые являются простыми числами.
Вариант №10.
Из входной последовательности целых чисел построить бинарное дерево поиска. Вывести на экран те значения в узлах дерева, которые являются палиндромами, а также номер уровня для каждого такого узла.
Вариант №11.
Из входной последовательности целых чисел построить бинарное дерево поиска. Вычислить среднее арифметическое значений в тех узлах, которые лежат на пути от корня до узла с минимальным элементом.
Вариант №12.
Из входной последовательности чисел построить бинарное дерево поиска. Для каждого уровня вывести на экран значения находящихся на этом уровне узлов слева направо.
Вариант №13.
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Вычислить среднее арифметическое всех узлов дерева. Вывести на экран те значения в узлах дерева, которые больше среднего арифметического, а также номер уровня для каждого такого узла.
Вариант №14.
Из входной последовательности целых чисел построить бинарное дерево поиска. Вывести на экран те значения в узлах дерева, которые являются простыми числами, а также номер уровня для каждого такого узла.
Вариант №15.
Из входной последовательности целых чисел построить бинарное дерево поиска. Определить сумму цифр в значениях тех узлов, которые лежат на пути от корня до максимального элемента.
Вариант №16.
Из двух входных последовательностей вещественных чисел построить два бинарных дерева поиска. Написать функцию, которая сравнивает суммы элементов построенных деревьев и возвращает 0, если они равны, и 1 в противном случае.
Вариант №17.
Из двух входных последовательностей символов построить два бинарных дерева поиска. Написать функцию, которая сравнивает глубину построенных деревьев и возвращает 0, если они равны, и 1 в противном случае.
Вариант №18.
Из двух входных последовательностей символов построить два бинарных дерева поиска. Написать функцию, которая сравнивает построенные деревья и возвращает 0, если они равны, и 1 в противном случае.
Вариант №19.
Из двух входных последовательностей вещественных чисел построить два бинарных дерева поиска. Написать функцию, которая сравнивает максимальные элементы построенных деревьев и возвращает 0, если они равны, и 1 в противном случае.
Вариант №20.
Из двух входных последовательностей вещественных чисел построить два бинарных дерева поиска. Написать функцию, которая сравнивает количество узлов в построенных деревьях и возвращает 0, если они равны, и 1 в противном случае.
Вариант №21.
Из входной последовательности целых чисел построить бинарное дерево поиска. Определить среднее арифметическое элементов самой длинной ветви. Если таких ветвей несколько, то взять для рассмотрения самую левую ветвь.
Вариант №22.
Из входной последовательности целых чисел построить бинарное дерево поиска. Определить среднее арифметическое элементов самой короткой ветви. Если таких ветвей несколько, то взять для рассмотрения самую правую ветвь.
Вариант №23.
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Удалить из дерева все листья.
Вариант №24.
Из слов входного файла, содержащего произвольный текст, построить бинарное дерево поиска. Удалить из дерева узлы, содержащие самые длинные слова.
Вариант №25.
Из слов входного файла, содержащего произвольный текст, построить бинарное дерево поиска. Путем обработки дерева определить, какое из слов чаще всего встречается в тексте.
Вариант №26.
Из слов входного файла, содержащего произвольный текст, построить бинарное дерево поиска. Удалить из дерева те узлы, где длина слов превосходит значение, заданное пользователем.
Вариант №27.
Из слов входного файла, содержащего произвольный текст, построить бинарное дерево поиска. Удалить из дерева узлы, содержащие слово, заданное пользователем.
Вариант №28.
Из слов входного файла, содержащего произвольный текст, построить бинарное дерево поиска. Вывести на экран все слова в алфавитном порядке, указывая для каждого слова частоту его встречаемости в тексте.
Вариант №29.
Из слов входного файла, содержащего произвольный текст, построить бинарное дерево поиска. Определить самое длинное из слов, содержащихся на заданном уровне дерева.
Вариант №30.
Из слов входного файла, содержащего произвольный текст, построить бинарное дерево поиска. Вывести на экран слова, содержащиеся в листьях дерева, в порядке убывания их длины.