Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MetAnalizSD_10.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
380.42 Кб
Скачать

Лабораторна робота № 2

Реалізація бінарних дерев і основних операцій над ними. Мета роботи: Практично реалізувати основні операції над двоїчними деревами. Зміст роботи та звіту.

1.Коротко описати основні операції над двоїчними деревами. 2.Розробити алгоритми реалізації основних операції над двоїчними деревами і подати їх в звіті .

3.Реалізувати розроблені алгоритми програмою, відлагоджений текст якої подати до звіту. 4.Привести приклади результатів роботи програми.

Завдання:

Розробити програму реалізації основних операції над двоїчними деревами: формування, обходи, пошук, додавання і вилучення елементів.

Варіанти завдань відносно інформації в узлах: 1. Рядок фіксованої довжини;

  1. Рядок з рахівником довжини;

  2. Рядок з ознакою кінця – символ %;

4. Рядок як лінійний однозв’язаний список; 5. Рядок як лінійний двухзв’язаний список.

Короткі теоретичні відомості.

Дерево - це сукупність елементів - вузлів, один з яких визначається як корінь, а також відносин між вузлами, що задають ієрархічну структуру. Рекурентне дерево - кожне піддерево можна розглядати, як дерево зі сво'ім власним коренем. 0-дерево - дерево без вузлів. Шлях між вузлами - сукупність зв'язків, які з'єднують ці вузли. Довжина дерева -найдовший шлях від кореня до листа дерева.

Опис основних операції над бінарними деревами. Формування. Формування дерева може відбуватися як в динамічній, так і в статичній пам'яті. Реалізувати формування дерева в динамічній пам'яті можно за допомогою обходу дерева зверху вниз. Додавання елементу.

При додаванні елементу треба зберігати впорядкованість дерева : якщо елемент, що додається більше елементу кореня, то елемент додається в праве піддерево, інакше - в ліве. Вилучення елементу

При вилученні елементу, також треба зберігати впорядкованість дерева. Елемент, що вилучається знищується, а його праве і ліве піддерево приєднуються до існуючого дерева так, щоб зберегти впорядкованість. Пошук

При пошуку елементу в бінарному впорядкованому дереві треба, порівнявши його з елементом кореня, продовжувати пошук в лівому, або в правому піддереві, в залежності від результату перевірки. Обходи дерева

Операції обходу дерева використовуються для виявлення вмісту дерева, вивода елементів вузлів у впорядкованому порядку і інших потреб. Існує декілька видів обходу дерева : зверху-вниз ( або прямий, або симетричний ) , знизу-вверх ( або зворотній ) , зліва-направо та справа-наліво.

При прямому обході спочатку виконують операцію з вузлом (наприклад, виводять елемент вузла ) , далі обходять ліве піддерево вузла , а потім праве піддерево вузла .

При зворотному обході, навпаки, обходять ліве піддерево вузла , обходять праве піддерево вузла, а потім виводять елемент вузла .

При обході зліва-направо обходять ліве піддерево вузла ,виводять елемент вузла, а потім обходять праве піддерево вузла .

При обході справа-наліво, навпаки, обходять праве піддерево вузла , виводять елемент вузла, а потім обходять ліве піддерево вузла .

Алгоритми. Формування.

Доки є елементи для вводу

Додати новий елемент

Д одавання єлементу S до вузла tree.

+ Вузол пустий? -

Cтворити новий елемент

+ Елемент вузла більше S? -

Додати еле- мент в праве піддерево

+ Елем.менше S? -

Додати елемент в ліве піддерево

Вихід

Пошук елемента S.

+ Вузол пустий ? -

Вивести "Такого елемента не існує

+ Вузл.ел.>шуканого? -

Пошук елемента в правому піддереві

Пошук елемента в лівому піддереві

Обход дерева ( наприклад, прямий )

+ Вузол пустий ? -

Вихід

Вивести на ектан елемент вузла Обхід лівого піддерева Обхід правого піддерева

Запити до захисту лабораторної роботи.

  1. Визначення бінарного дерева.

  2. Визначення шляху в дереві.

  3. Визначення висоти дерева.

  4. Опис вузла бінарного дерева.

  5. Алгоритм формування бінарного дерева.

  6. Реалізація операції додавання вузла до дерева.

  7. Алгоритм пошуку вузла за ознакою вмісту вузла.

  8. Вилучення вузла бінарного дерева.

  9. Алгоритми обходу дерева зверху-вниз і зліва-направо.

  10. Алгоритми обходу дерева знизу-вверх і справа-наліво.

Лабораторна робота № 3 Використання дерев для впорядкування даних. Мета роботи: Практично реалізувати основні методи впорядкування даних за допомогою дерев.

Зміст роботи та звіту. 1. Коротко описати основні методи впорядкування даних за допомогою дерев. 2. Розробити алгоритми основних методів і подати їх в звіті . 3. Реалізувати розроблені алгоритми програмою, відлагоджений текст якої подати до звіту. 4.Привести приклади результатів роботи програми.

Завдання : Розробити програму реалізації основних методів впорядкування даних за допомогою дерев . Варіанти завдань: 1.Вибірка з дерева, турнірне впорядкування з використанням додаткової пам’яті і двоїчна вставка – статичне дерево. 2.Вибірка з дерева, мінімальне за пам’яттю турнірне впорядкування і двоїчна вставка – динамічне дерево.

Короткі теоретичні відомості.

Впорядкованним бінарним деревом вважається таке дерево, в якому вміст корньового вузла піддерева більше вмісту вузла лівого піддерева і меньше вмісту вузла правого піддерева. Впорядкування вибором з дерева. Згідно з визначенням впорядкованного дерева, воно формується за таким алгоримом. Перший елемент впорядковуємого вектора розміщується в корні. Наступні елементи меньші корньового розміщуються в лівому піддереві, а більші – в правому піддереві. Впорядкований вектор отримується обходом дерева зліва направо. Турнірне впорядкування з використанням додаткової памяті.

Реалізується в статичній пам’яті. Для впорядкування вектора з n елементів виділяється 2*n +1 комірок пам’яті . Невпорядкованний вектор розміщується в останніх комірках пам’яті. Починаючи з останнього елемента вектора, організується турнір між сусідніми елементами. При впорядкуванні за зростанням меньший з них розміщується в першій вільній комірці, в другій вільній розміщується менший з наступної пари і такі порівняння-розміщення здійснюються до тих пір, поки в першій комірці не опиниться менший з елементів поточного вектора. При перемішенні елементів вектора в додатковій змінній запам’ятовується індекс ( початкове положення ) мінімального елемента. При виводі мінімального елемента вектора в вихідний масив на його початкове місце розміщують фіктивний( непорівняльно великий за значенням елемент ) і проводять черговий етап знаходження мінімального елемента вектора. Таких етапів буде n-1 доки всі елементи вектора не опиняться впорядкованими.

Мінімальне за пам'яттю турнірне впорядкування. Розглядаються трійки вузлів ( i-го, 2*i-го і 2*i+1-го ), починаючи з останніх елементів. Трійки впорядковуються таким чином, щоб коренем був найменший (найбільший) вузол в залежності від принципу впорядкування. Впорядкування в трійках провадяться до тих пір, поки в вершині лівого і правого піддірева опиняються найменші елементи відповідних піддерев.

Порівнюються елементи вершин піддерев і корньового вузла .Менший з них відправляється в вихідний масив, а більший повертається в піддерево. Останній елемент дерева розміщується в корньовий і кількість впорядковуємих елементів зменшується на одиницю. Останній елемент виключається з розглядання і алгоритм повторюється. Двоїчна вставка - статичне дерево.

Нехай маємо вектор m елементів.

  1. Будуємо дерево таким чином, щоб його ліве та праве піддрева мали однакову кількість елементів, що дорівнює m-1.

  2. Ліве піддерево заповнюємо фіктивними мінімальними елементами ( наприклад, -999), а праве- фіктивними максимальними (999 ).

3. Формування дерева за правилом - в лівому під дереві розміщується елемент менший ніж у батьківському вузлі, а в правому більший.

4. Обходом дерева зліва направо - вивід елементів дерева у впорядкований за зростанням масив.

Двоїчна вставка - динамічне дерево.

  1. Розміщуємо перший елемент масиву в вузлі - медіані дерева.

  2. Наступний елемент порівнюємо з величиною медіани і розміщуємо праворуч або ліворуч медіани, вставляючи його в впорядкований підсписок.

  3. Якщо довжина лівого піддерева не дорівнює довжині правого, то медіана змінює своє розташування в бік більшого піддерева, займаючи місце посередині списку.

Запити до захисту лабораторної роботи.

  1. Алгоритм формування дерева метода впорядкування вибором з дерева.

  2. Алгоритм виводу впорядкованого масиву метода впорядкування вибором з дерева.

  3. Алгоритм турнірного впорядкування з використанням додаткової пам’яті.

  4. Правила корегування трійок метода мінімального за пам’яттю турнірного впорядкування.

  5. Алгоритм отримання чергового елемента впорядкованого масива метода мінімального за пам’яттю турнірного впорядкування.

  6. Структура дерева в методі двоїчні вставки - статичне дерево.

  7. Алгоритм реалізації метода двоїчні вставки - статичне дерево.

  8. Що є медіаною списка в методі двоїчні вставки - динамічне дерево.

  9. Алгоритм реалізації метода двоїчні вставки - динамічне дерево.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]