- •Лабораторні роботи з дисципліни «Алгоритми і структури даних»
- •1. Шаблони функцій. Алгоритми сортування
- •2. Шаблони класів. Динамічні масиви
- •3. Списки з самоорганізацією
- •4. Стандартна бібліотека шаблонів. Послідовні контейнери
- •5. Стандартна бібліотека шаблонів. Асоціативні контейнери
- •6. Бінарні дерева пошуку
- •7. Червоно-чорні дерева
- •8. Авл дерева
- •9. Порівняння методів балансування бінарних дерев
6. Бінарні дерева пошуку
Мета роботи. Ознайомитись з принципами побудування бінарних дерев пошуку і найпростішими методами їх балансування.
Завдання.
Створити шаблон класу бінарного дерева пошуку з наступними операціями.
Додавання елемента в дерево.
Видалення елемента з дерева.
Пошук елемента в дереві. Створити два варіанти функції: перша функція повертає значення true, якщо елемент є в дереві, false – якщо його немає; друга функція повертає вказівник на елемент, якщо він є в дереві, і nullptr якщо його там немає.
Пошук мінімального і максимального елементів дерева.
Знаходження кількості елементів в дереві.
Знаходження висоти дерева.
Пошук батька елемента.
Прямий, зворотний, центрований обхід дерева.
Обхід дерева в ширину.
Формування лінійного дужкового запису дерева.
Видалення дерева.
На основі класу бінарного дерева реалізовувати клас «множина», аналогічний класу setстандартної бібліотеки шаблонів С++. Операції класу «множина».
Конструктор, що створює пусту множину.
Конструктор, що створює множину з заданим критерієм сортування.
Конструктор копіювання.
Конструктор, що створює множину, ініціалізовану елементами інтервалу [begin,end).
Конструктор, що створює множину, ініціалізовану елементами інтервалу [begin,end)з заданим критерієм сортування.
Знаходження кількості елементів множини.
Перевірка, чи є множина порожньою.
Перевірка, чи входить елемент в множину.
На основі класу бінарного дерева реалізувати клас збалансованого дерева. Для балансування використовувати додатковий відсортований масив і бінарний пошук.
На основі класу бінарного дерева реалізувати клас збалансованого дерева. Для балансування використовувати алгоритм DSW.
7. Червоно-чорні дерева
Мета роботи. Ознайомитись з властивостями червоно-чорних дерев і методами підтримки балансу в них.
Завдання.
Створити шаблон класу червоно-чорного дерева з наступними операціями.
Додавання елемента в дерево.
Видалення елемента з дерева.
Пошук елемента в дереві.
Передбачити можливість підрахування кількості наступних операцій.
Повороту дерева при додаванні і видаленні елементів.
Зміни кольору вузлів дерева при додаванні і видаленні елементів.
Переходу між елементами дерева при пошуку.
8. Авл дерева
Мета роботи. Ознайомитись з властивостями АВЛ дерев і методами підтримки балансу в них.
Завдання.
Створити шаблон класу АВЛ дерева з наступними операціями.
Додавання елемента в дерево.
Видалення елемента з дерева.
Пошук елемента в дереві.
Передбачити можливість підрахування кількості наступних операцій.
Операцій повороту дерева при додаванні і видаленні елементів.
Операцій переходу між елементами дерева при пошуку.
9. Порівняння методів балансування бінарних дерев
Мета роботи. Порівняти ефективність червоно-чорних, АВЛ і splay дерев і алгоритму балансування DSW.
Завдання.
Створити шаблон класу splay дерева з наступними операціями.
Додавання елемента в дерево.
Видалення елемента з дерева.
Пошук елемента в дереві.
Для splay дерева передбачити можливість підрахування кількості наступних операцій.
Операцій повороту дерева при додаванні і видаленні елементів.
Операцій переходу між елементами дерева при пошуку.
Порівняти кількість операцій з підтримки балансу (поворотів для АВЛ дерева, поворотів й зміни кольору вузлів для Червоно-Чорних дерев) і операцій переходу між елементами дерева для наступних випадків.
Послідовність додавання, видалення і звертання до елементів дерева випадкова, але кількість операцій додавання і видалення значно менша кількості операцій пошуку елементів дерева.
Послідовність додавання, видалення і звертання до елементів дерева випадкова, але кількість операцій додавання і видалення значно більша кількості операцій пошуку елементів дерева.