Лабораторная работа №17 Тема: Деревья
При выполнении лабораторной работы студент должен знать определения дерева, двоичного дерева, основных понятий; способы реализации деревьев.
Уметь выполнять основные операции с двоичными упорядоченными деревьями: заполнение дерева (вставка узла в дерево), обход дерева, поиск узла дерева по заданному ключу, удаление узла дерева по заданному ключу.
Решить следующие задания:
Задание 1. Дано арифметическое выражение. Необходимо:
построить для него бинарное дерево (построение произвести в тетради);
получить запись арифметического выражения в префиксной и постфиксной форме.
Вариант 1. M+K/(L–N*P)+T*Y |
Вариант 2 ((Y+X*K)*(G–S)+T)*(F–K)+D |
Вариант 3 (T–S/R)*(Z+X+Y/Q) |
Вариант 4 (A*B+(C–D)*F)/G–H |
Вариант 5 (M*L–(N+K*F)/S)*T |
Вариант 6 P*(A–Q–S)+L/(D+K) |
Вариант 7 F+D–G*(X+Y–Z) |
Вариант 8 K*T*(L–E/R+S) |
Вариант 9 (F*(P–G)+Z/K)*D–T |
Вариант 10 M–C/L/(S+R*B) |
Вариант 11 (A–P+R/(B–C))/(K+L*F) |
Вариант 12 (((M+N)*R+K)*D+F)/G |
Вариант 13 S/P–Y*X+D/F |
Вариант 14 A/(B+C)–D*F+G |
Вариант 15 R+M*(F–K/N)+G*T |
Задание 2. Для заданной последовательности целых чисел построить бинарное дерево поиска. Реализовать алгоритмы для работы с деревом поиска, считая, что дерево имеет связное представление:
Построение дерева
Включение узла
Печать дерева в наглядной форме
Сортировка последовательности по возрастанию и убыванию
Поиск элемента в дереве
Удаление дерева.
Требования к программе: программа должна быть реализована таким образом, чтобы пользователь мог выбрать операцию с деревом, т.е. необходимо организовать меню. Последовательность чисел можно хранить в текстовом файле.
Вариант 1. 10, 12, 2, 5, 7, 14, 8, 11 Вставить: 3. 13; Удалить: 8 Сортировать по возрастанию |
Вариант 2 11, 16, 7, 4, 5, 2, 12, 18, 14 Вставить 6, 13. Удалить: 12 Сортировать по убыванию |
Вариант 3 18, 10, 11, 4, 2, 5, 7, 17 Вставить 8, 13. Удалить: 11 Сортировать по возрастанию |
Вариант 4 7, 17, 8, 10, 14, 12, 9, 15, 1, 2 Вставить 3, 11. Удалить: 10 Сортировать по убыванию |
Вариант 5 13, 2, 15, 4, 1, 6, 14, 3, 18 Вставить 5, 12. Удалить: 3 Сортировать по возрастанию |
Вариант 6 5, 15, 3, 12, 18, 11, 17, 1, 4 Вставить 2, 13. Удалить: 11 Сортировать по убыванию |
Вариант 7 13, 8, 15, 12, 18, 0, 9, 16, 14 Вставить 7, 11. Удалить: 9 Сортировать по возрастанию |
Вариант 8 8, 11, 5, 2, 13, 7, 4, 15, 12, 10 Вставить 3, 9. Удалить: 5 Сортировать по убыванию |
Вариант 9 18, 11, 6, 12, 9, 19, 4, 21 Вставить 8, 13. Удалить: 6 Сортировать по убыванию |
Вариант 10 18, 13, 25, 2, 14, 8, 1, 16, 28 Вставить 3, 10. Удалить: 8 Сортировать по возрастанию |
Вариант 11 14, 5, 29, 18, 0, 8, 17, 20, 19 Вставить 9, 13. Удалить: 18 Сортировать по убыванию |
Вариант 12 16, 22, 2, 23, 15, 3, 18, 0 Вставить 5, 13. Удалить: 15 Сортировать по возрастанию |
Вариант 13 24, 19, 21, 25, 8, 18, 26, 4, 23 Вставить 9, 13. Удалить: 21 Сортировать по убыванию |
Вариант 14 6, 29, 20, 15, 5, 28, 36, 2, 22 Вставить 7, 13. Удалить: 15 Сортировать по возрастанию |
Вариант 15 17, 6, 9, 15, 29, 8, 22, 31, 35 Вставить 5, 13. Удалить: 22 Сортировать по убыванию |
Задачи для самостоятельного решения
Дано двоичное дерево. Необходимо проверить, является ли оно деревом поиска.
Дан текст. Необходимо проверить частоту использования каждого символа в тексте. Результат оформить в виде таблицы, содержащей символы в алфавитном порядке и частоту их появления в тексте.
Пусть символы a, b, c, d, e, f имеют вероятности появления соответственно 0.07, 0.09, 0.12, 0.22, 0.23, 0.27. Найдите оптимальный код Хаффмана и нарисуйте соответствующее ему дерево.
Дано дерево T, напишите программу, строящую копию данного дерева.