3.5. Árboles Rojos-Negros

Anuncio
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
DEFINICIÓN Y PROPIEDADES
Un árbol Rojo-Negro es una representación en árbol binario de un árbol 2-3-4.
Los hijos de un nodo en un árbol Rojo-Negro son de dos tipos: Rojos y
Negros. Si el hijo ya existía en el árbol 2-3-4 original será Negro, sino será
Rojo
Propiedades
es un árbol binario de búsqueda
cada camino desde la raíz hasta las hojas tiene el mismo número de hijos
negros (esto es debido a que todos los nodos externos en un árbol 2-3-4
están en el mismo nivel y los hijos negros representan los hijos originales)
ningún camino desde la raíz a las hojas tiene dos o más hijos rojos
consecutivos
1
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
REPRESENTACIÓN (I)
Un 2-nodo será representado por un nodo q con sus dos hijos de color Negro
x
x
a
a
b
b
Un 3-nodo será representado por dos nodos conectados con un puntero Rojo
x
y
y
b
a
c
x
c
a
b
a
x
O bien
y
b
c
Un 4-nodo será representado por tres nodos, uno de los cuales es conectado a
los otros dos por punteros Rojos
x
a
y
b
z
c
y
x
d
a
z
b
c
d
2
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
REPRESENTACIÓN (II)
Ejemplo: representación de un árbol 2-3-4 como árbol Rojo-Negro
50
30
10
20
70
40
45
55
80
95
70
45
60
55
110
95
100
30
40
60 65
Caso b) del 3-nodo:
50
10
100
90
Caso a) del 3-nodo:
20
90
80
50
90
30
110
10
70
40
20
45
65
 DLSI (Univ. Alicante)
80
60
55
100
95
65
110
3
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
OPERACIONES BÁSICAS
Operaciones básicas:
Búsqueda (similar a los árboles binarios de búsqueda. Los colores de
los hijos no se usan)
Inserción (se utilizarán las transformaciones de los 4-nodos descritas
para los árboles 2-3-4)
Borrado (no se estudiará)
4
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
OPERACIONES BÁSICAS. INSERCIÓN (I)
Es la raíz de un árbol
x
z
y
b
a
y
x
d
c
z
d
c
b
a
Resultado
y
y
Cambio de color a negro
x
z
a
b
x
c
z
d
c
b
a
d
Cambio de color a negro
5
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
OPERACIONES BÁSICAS. INSERCIÓN (II)
Su padre es un 2-nodo
z
z
e
x
x
w
e
y
w
a
b
d
c
y
b
a
d
c
Resultado
z
x
z
w
a
y
b
c
e
x
e
w
d
a
y
b
c
Cambio de color:
padre a rojo
hijos a negros
d
6
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
OPERACIONES BÁSICAS. INSERCIÓN (III)
Su padre es un 3-nodo
y
y
z
w
w
v
a
e
x
b
z
f
v
d
c
d
c
b
a
f
e
x
Resultado
w
y
y
z
e
v
w
f
x
a
b
z
v
c
d
e
x
b
a
c
f
Cambio de color:
padre a rojo
hijos a negros
d
7
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
OPERACIONES BÁSICAS. INSERCIÓN (IV)
Transformación de 4-nodo:
Cambiar los hijos de rojos a negros. Cambiar enlace con el padre de negro a rojo
Si hay 2 enlaces rojos seguidos: ROTACIONES (no hay ningún cambio de color)
ROT. II
ROT. ID
z
y
z
x
d
x
a
c
y
y
b
a
c
b
x
ROT. DD
d
z
ROT. DI
x
a
a
b
c
x
d
a
y
b
z
z
c
d
y
d
b
Inserción: como máximo log n rotaciones y log n cambios de color
c
8
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
OPERACIONES BÁSICAS. INSERCIÓN. EJEMPLO (V)
Ejemplo. Insertar en un árbol Rojo-Negro inicialmente vacío los siguiente items
20, 40, 80, 65, 90, 50, 30, 35, 32, 70 y 60
40
20
DD
20, 40, 80
65
40
20
40
20
80
cambio color
80
65
80
40
40
50
90
20
80
65
20
cambio color
40
30, 35
20
80
65
90
80
30
90
65
35
50
90
50
9
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
OPERACIONES BÁSICAS. INSERCIÓN. EJEMPLO (VI)
40
40
32
DD
30
80
30
cambio color
20
35
65
90
20
50
80
35
60
40
40
cambio color
90
50
32
70
65
cambio color
30
30
20
20
35
65
35
50
65
90
90
32
32
80
80
50
70
70
60
10
 DLSI (Univ. Alicante)
Tema 3. Tipo árbol
3.5. Árboles Rojos-Negros
EJERCICIOS inserción
1) Insertar en el árbol Rojo-Negro obtenido en el ejemplo anterior los siguiente items
68, 77 y 75
11
Descargar