Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичні вказівки до практичних робіт.docx
Скачиваний:
32
Добавлен:
07.06.2015
Размер:
3.36 Mб
Скачать

На цьому дереві можна визначити три методи упорядкування:

Зліва направо: Ліве піддерево - Корінь - Праве піддерево;

Зверху вниз: Корінь - Ліве піддерево - Праве піддерево;

Знизу вгору: Ліве піддерево - Праве піддерево - Корінь.

Ці три методи можна сформулювати у вигляді рекурсивних алгоритмів.

void Run (point * p)

/ / Обхід зліва направо

{

if (p)

{

<Обробка p-> data>Run (p-> left) ;/ / перехід до лівого піддерева

Run (p-> right) ;/ / перехід до правого піддерева

}

}

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

2.4.2. Формування дерева

/ / Побудова дерева пошуку

Point * first (int d) / / формування першого елемента дерева

{

Point * p = new Point;

p-> key = d;

p-> left = 0;

p-> right = 0;

return p;

}

/ / Додавання елемента d в дерево пошуку

Point * Add (Point * root, int d)

{

Point * p = root ;/ / корінь дерева

Point * r;

/ / Прапор для перевірки існування елемента d в дереві

bool ok = false;

while (p &&! ok)

{

r = p;

if (d == p-> key) ok = true ;/ / елемент вже існує

else

if (d <p-> key) p = p-> left ;/ / піти в ліве піддерево

else p = p-> right ;/ / піти в праве піддерево

}

if (ok) return p ;/ / знайдено, не додаємо

/ / Створюємо вузол

Point * New_point = new Point () ;/ / виділили пам'ять

New_point-> key = d;

New_point-> left = 0;New_point-> right = 0;

/ / Якщо d <r-> key, то додаємо його в ліве піддерево

if (d <r-> key) r-> left = New_point;

/ / Якщо d> r-> key, то додаємо його в праве піддерево

else r-> right = New_point;return New_point;

}

/ / Побудова ідеально збалансованого дерева

point * Tree (int n, point * p)

{

point * r;

int nl, nr;

if (n == 0) {p = NULL; return p;}

nl = n / 2;

nr = n-nl-1;

r = new point;

cout << "?";

cin >> r-> data;

r-> left = Tree (nl, r-> left);r-> right = Tree (nr, r-> right);

p = r;

return p;

}

3. Постановка завдання

1. Сформувати односпрямований список, тип інформаційного поля зазначений у варіанті.

2. Роздрукувати отриманий список.

3. Виконати обробку списку у відповідності з завданням.

4. Роздрукувати отриманий список.

5. Видалити список з пам'яті.6. Сформувати двонаправлений список, тип інформаційного поля зазначений у варіанті.

7. Роздрукувати отриманий список.

8. Виконати обробку списку у відповідності з завданням.

9. Роздрукувати отриманий список.

10. Видалити список з пам'яті.

11. Сформувати ідеально збалансоване бінарне дерево, тип інформаційного поля зазначений у варіанті.

12. Роздрукувати отримане дерево.

13. Виконати обробку дерева відповідно до завдання, вивести отриманий результат.

14. Перетворити ідеально збалансоване дерево в дерево пошуку.

15. Роздрукувати отримане дерево.

4. Варіанти

Завдання 19.1, 19.2 та 19.3

Таблиця 24 – Вихідні данні для завданнь 19.1, 19.2 та 19.3

варианта

Однонаправленный

Двунаправленный

Бинарное дерево

1

Тип информационного поля int.

Удалить из списка все элементы с четными информационными полями.

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля char.

Найти количество элементов с заданным ключом.

2

Тип информационного поля double.

Удалить из списка все элементы с четными номерами (2, 4, 6 и. т. д.).

Тип информационного поля char*.

Добавить в список элементы с номерами 1, 3, 5 и т. д.

Тип информационного поля int.

Найти максимальный элемент в дереве.

3

Тип информационного поля int.

Удалить из списка первый элемент с четным информационным полем.

Тип информационного поля double.

Добавить в список элемент после элемента с заданным информационным полем.

Тип информационного поля char*.

Найти количество листьев в дереве.

4

Тип информационного поля int.

Удалить из списка последний элемент с четным информационным полем.

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля double.

Найти минимальный элемент в дереве.

5

Тип информационного поля char*.

Добавить в список элемент после элемента с заданным информационным полем.

Тип информационного поля int.

Удалить из списка все элементы с четными информационными полями.

Тип информационного поля char.

Найти высоту дерева.

6

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля double.

Удалить из списка все элементы с четными номерами (2, 4, 6 и. т. д.).

Тип информационного поля int.

Найти среднее арифметическое элементов дерева.

7

Тип информационного поля double.

Добавить в список после каждого элемента с отрицательным информационным полем элемент с информационным полем равным 0.

Тип информационного поля int.

Удалить из списка первый элемент с четным информационным полем.

Тип информационного поля char*.

Найти количество элементов дерева, начинающихся с заданного символа.

8

Тип информационного поля char*.

Добавить в список элементы с номерами 1, 3, 5 и т. д.

Тип информационного поля int.

Удалить из списка последний элемент с четным информационным полем.

Тип информационного поля char.

Найти количество элементов с заданным ключом.

9

Тип информационного поля int.

Удалить из списка все элементы с четными информационными полями.

Тип информационного поля char*.

Добавить в список элементы с номерами 1, 3, 5 и т. д.

Тип информационного поля double.

Найти максимальный элемент в дереве.

10

Тип информационного поля double.

Удалить из списка все элементы с четными номерами (2, 4, 6 и. т. д.).

Тип информационного поля char*.

Добавить в список элемент после элемента с заданным информационным полем.

Тип информационного поля int

Найти количество листьев в дереве.

11

Тип информационного поля int.

Удалить из списка первый элемент с четным информационным полем.

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля double.

Найти минимальный элемент в дереве.

12

Тип информационного поля int.

Удалить из списка последний элемент с четным информационным полем.

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля char.

Найти высоту дерева.

13

Тип информационного поля char*.

Добавить в список элемент после элемента с заданным информационным полем.

Тип информационного поля double.

Удалить из списка все элементы с отрицательными информационными полями.

Тип информационного поля int.

Найти среднее арифметическое элементов дерева.

14

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля int.

Удалить из списка последний элемент с четным информационным полем.

Тип информационного поля char.

Найти количество элементов с заданным ключом.

15

Тип информационного поля double.

Добавить в список после каждого элемента с отрицательным информационным полем элемент с информационным полем равным 0.

Тип информационного поля int.

Удалить из списка все элементы с четными номерами (2, 4, 6 и. т. д.).

Тип информационного поля char*.

Найти количество элементов дерева, начинающихся с заданного символа

16

Тип информационного поля char*.

Добавить в список элементы с номерами 1, 3, 5 и т. д.

Тип информационного поля int.

Удалить из списка первый элемент с четным информационным полем.

Тип информационного поля int.

Найти максимальный элемент в дереве.

17

Тип информационного поля int.

Удалить из списка все элементы с четными информационными полями.

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля double.

Найти количество листьев в дереве.

18

Тип информационного поля double.

Удалить из списка все элементы с четными номерами (2, 4, 6 и. т. д.).

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля int.

Найти минимальный элемент в дереве.

19

Тип информационного поля int.

Удалить из списка первый элемент с четным информационным полем.

Тип информационного поля char*.

Добавить в список элементы с номерами 1, 3, 5 и т. д.

Тип информационного поля char.

Найти высоту дерева.

20

Тип информационного поля int.

Удалить из списка последний элемент с четным информационным полем.

Тип информационного поля char*.

Добавить в список элемент после элемента с заданным информационным полем.

Тип информационного поля double.

Найти среднее арифметическое элементов дерева.

21

Тип информационного поля char*.

Добавить в список элемент после элемента с заданным информационным полем.

Тип информационного поля int.

Удалить из списка все элементы с четными информационными полями.

Тип информационного поля char*.

Найти количество элементов дерева, начинающихся с заданного символа.

22

Тип информационного поля char*.

Добавить в список элемент с заданным номером.

Тип информационного поля double.

Удалить из списка все элементы с четными номерами (2, 4, 6 и. т. д.).

Тип информационного поля char.

Найти количество элементов с заданным ключом.

23

Тип информационного поля double.

Добавить в список после каждого элемента с отрицательным информационным полем элемент с информационным полем равным 0.

Тип информационного поля int.

Удалить из списка первый элемент с четным информационным полем.

Тип информационного поля char*.

Найти количество листьев в дереве.

24

Тип информационного поля char*.

Добавить в список элементы с номерами 1, 3, 5 и т. д.

Тип информационного поля int.

Удалить из списка последний элемент с четным информационным полем.

Тип информационного поля double.

Найти максимальный элемент в дереве.

25

Тип информационного поля int.

Удалить из списка все элементы с четными информационными полями.

Тип информационного поля char*.

Добавить в список элементы с номерами 1, 3, 5 и т. д.

Тип информационного поля double.

Найти минимальный элемент в дереве.