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

сиаод / 1-34 / 31. Добавление вершины в красно-черное дерево

.pdf
Скачиваний:
71
Добавлен:
11.05.2015
Размер:
202.36 Кб
Скачать

31. Добавление вершины в красно – черном дереве.

Сначала выполняется обычная операция включения в двоичное дерево Tree_Insert и новая вершина помечается красным цветом. После этого восстанавливаются RB-свойства, если они нарушены путем перекраски вершин и вращений.

RB_Insert (T, x)

1.Tree_Insert (T, x)

2.color [x] ← RED

3.while x ≠ root [T] and color [p[x]] = RED

4.dv if p[x] = left [p[p[x]]]

5.then y ← right [p[p[x]]]

6.if color [y] = RED

7.then color [p[x]] ← BLACK

8.color [y] ← BLACK

9.color [p[p[x]]] ← RED

10.x ← p[p[x]]

11.else if x = right [p[x]]

12.then x ← p[x]

13.Left_Rotate (T, x)

14.color [p[x]] ← BLACK

15.color [p[p[x]]] ← RED

16.Right_Rotate (T, p[p[x]])

17.else (симметричный текст с заменой left ↔ right)

18.color [root[T]] ← BLACK