Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
12.05.2015
Размер:
1.5 Mб
Скачать

Результати обходу дерева.

Спосіб обходу

Послідовність символів

Зверху вниз

* + ab-cd

Зліва направо

а + b* c-d

Знизу вверх

ab + cd-*

Будь-який спосіб обходу дерева можна реалізувати рекурсивною процедурою.

До цих процедур передається параметр-значення, що є покажчиком на корінь дерева. Тіло всіх трьох процедур містить однаковий набір операторів. Першою виконується перевірка того, чи не є дерево порожнім. Якщо дерево порожнє, здійснюється рекурсивне повернення, а в іншому разі виводиться значення вузла і рекурсивно викликаються процедури обходу для лівого та правого піддерев. Порядок цих трьох операторів і визначає форму виразу, що буде створений у результаті обходу. А саме, якщо виведення значення вузла виконуватиметься першим, то буде отримано префіксну форму виразу, якщо другим — інфіксну, а якщо третім — постфіксну форму.

Дерева бінарного пошуку

Бінарні дерева часто використовуються для зображення множин, елементи яких потрібно знаходити за заданим значенням ключа. Такі дерева називаються деревами бінарного пошуку.

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

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

Для знаходження за таким алгоритмом значення ключа серед n-елементної множини буде переглянуто O(log п) елементів.

Приклад. Функція знаходження ключового значення в бінарному дереві пошуку.

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

Включення вузлів у дерево

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

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

Дану задачу називають іще пошуком із включенням.

Соседние файлы в папке ТЕОРІЯ АЛГОРИТМІВ