Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DM_2 / ОДМлек / СРМлек52.pps
Скачиваний:
74
Добавлен:
12.05.2015
Размер:
674.3 Кб
Скачать

Приклад побудови дерева для такого списку: {m,a,c,h,i,n,e,b,o,x}.

m

a n

 

c

o

b

h

x

 

e

i

Алгоритм пошуку об'єкта в дереві

Застосовують той самий підхід, що для побудови дерева.

1)Почати з кореня.

2)Якщо об'єкт менший, ніж ключ у вершині, то перейти до лівого сина.

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

4)Якщо об'єкт дорівнює ключу у вершині, то об'єкт знайдено; виконати потрібні дії й вийти.

5)Повторювати кроки 2, 3 та 4, доки не досягнемо вершини, яку не визначено.

6)Якщо досягнуто невизначену вершину, то даний об'єкт не зберігається в дереві; виконати потрібні дії й вийти.

Приклад пошуку у дереві для такого списку: {x,d}.

d< m <x

d> a n <x

c <d

 

o<x

b

h >d

x

d> e

i

 

d?

Алгоритм видалення об'єкта з дерева

Можливі три випадки:

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

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

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

Перший випадок найпростіший – вузол просто видаляється.

У другому випадку на місце вузла, що видаляється, ставиться його нащадок.

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

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

Вузол, що переставляється, називається термінальним.

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

Приклад видалення вузла, що не має нащадків.

m

a n

 

c

o

b

h

x

 

e

i

Приклад видалення вузла, що має одного нащадка.

m

a n

 

c

ox

b

h

x

 

e

i

Приклад видалення вузла, що має двох нащадків.

m

a n

 

c

o

b

h

x

 

e

i

Приклад видалення вузла, що має двох нащадків.

i

an

 

c

o

b

h

x

 

e

 

Найбільша кількість порівнянь, потрібних для додавання або пошуку об'єкта, дорівнює висоті дерева. Якщо дерево збалансоване, то його висота [log(n+1)]. Отже, у цьому разі для додавання чи локалізації об'єкта потрібно не більше ніж [log(n+1)] порівнянь. Бінарне дерево пошуку може розбалансуватись унаслідок додавання нових об'єктів, тому потрібен алгоритм ребалансування (тобто відновлення збалансованості). Проте процедура додавання об'єкта, яка відновлює збалансоване дерево, навряд чи завжди доцільна, бо відновлення збалансованості дерева після випадкового додавання — досить складна операція. Тому розглядають також збалансованість із дещо послабленими вимогами.

Соседние файлы в папке ОДМлек