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

Приклад. Включення вузла в бінарне дерево пошуку.

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

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

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

Можливі три випадки видалення вузла бінарного дерева пошуку :

вузол, що видаляється, є листком дерева;

вузол, що видаляється, має одного нащадка;

вузол, що видаляється, має двох нащадків.

Задача розв'язується найпростішим способом тоді, коли вузол, що видаляється, є листком дерева. У такому разі слід звільнити ділянку динамічної пам'яті, яку цей вузол займав, та присвоїти значення nil покажчикові на даний вузол.

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

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

термінальним.

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

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