Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию / 19 Б и КЧ деревья.pptx
Скачиваний:
62
Добавлен:
06.06.2015
Размер:
695.88 Кб
Скачать

B_tree_insert_nonfull(x, k)

{

i = n(x);

if (leaf(x)) { // ключ вставляется в лист

while (i ≥ 0 && k < keyi(x)){ keyi+1(x)=keyi(x);

i--;

}

keyi+1(x) = k; n(x) = n(x)+1;

} else {

// поиск нужного ребенка

while( i ≥ 0 && k < keyi(x)) i--;

i = i+1;

if (n(Ci(x)) == 2t-1) {

// если ребенок–полная вершина

B_tree_split_child (x, i, Ci(x));

// разделение

if (k > keyi(x)) i = i+1;

}

B_tree_ insert_nonfull (Ci(x), k);

}

Удаление элемента из B дерева

(а) начальное дерево

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

t = 3

 

C G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T X

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A B

D E F

J K L

 

N O

Q R S

U V

Y Z

(б) удалена F из листа

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

 

 

 

 

 

 

C G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T X

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A B

D E

J K L N O

Q R S

U V

Y Z

 

P

C G

T X

M

 

A B

D E

J K L N O

Q R S

U V

Y Z

(в) удалена M из внутренней вершины, ребенок

которой имеет

не менее t элементов

P

C G L

T X

A B

D E

J K

N O

Q R S

U V

Y Z

Если ребенок, следующий за удаляемым ключом,

имеет не менее t элементов, поступаем аналогично

(в)

P

C G L

T X

A B

D E

J K

N O

Q R S

U V

Y Z

(г) удалена G, ее дети имеют по t-1 ключу

P

C L

T X

A B

D E J K

N O

Q R S

U V

Y Z

х C L

P

T X

A B

D E J K

N O

Q R S

U V

Y Z

(д) удалена D, в вершине х нет ключа D и t = 2

C L P T

X

A B E J K N O Q R S U V Y Z

(д’) уменьшение высоты дерева

C L P T

X

A B E J K N O Q R S U V Y Z

(е) удалена C

E L P T

X

A B

J K

N O Q R S U V Y Z

B деревья

Определение

Вставка и удаление вершины

Красно-черные деревья

Определение

Вставка вершины

Сравнение в АВЛ деревьями

Связь КЧ и B деревьев

Красно-чёрное дерево

Rudolf Bayer 1972

Симметричные двоичные B деревья

Леонидас Гибас и Роберт Седжвик 1978 КЧ деревья

Красно-чёрное дерево – это дерево двоичного поиска, обладающее следующими КЧ свойствами

1.Все листья чёрные и не содержат данных

2.Все потомки красных узлов чёрные – нет двух красных узлов подряд

3.На всех путях от корня к листьям число чёрных узлов одинаково и равно чёрной высоте дерева

Пример КЧ дерева (Википедия)