Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Tema 12: Árbol Rojo-Negro
Estructuras de datos (Prof. Edgardo A. Franco)
1M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom
Contenido• Introducción
• Propiedades
• Altura de un nodo
• Operaciones en el árbol
• Inserción• Caso 1
• Caso 2
• Caso 3
• Borrar• Caso 1
• Caso 2
• Caso 3
• Caso 4
• Rotaciones
• Rotación derecha
• Rotación izquierda
Árbol Binario I (Edgardo A. Franco)
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
2
Introducción• Los árboles de búsqueda binarios "equilibrados"
garantizan un tiempo de ejecución de O(log n)
• Un árbol rojo-negro es una estructura de datos enla cual cada nodo tiene un atributo adicional: colorque puede ser rojo o negro.
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
3
26
17 41
30 47
38 50
NIL
NIL
NIL NIL NIL NIL
NIL
NIL
Propiedades• Es un árbol binario de búsqueda
• Cada nodo tiene estado rojo o negro.
• La raíz es negra (esta condición se impone para simplificar algunas operaciones).
• Toda hoja es negra
• Se cumplen las condiciones: 1. Un nodo rojo tiene dos hijos negros.
2. Todo camino de la raíz a cualquier hoja pasa por el mismo número de nodos negros.
4
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Altura de un nodo
▪ Altura de un nodo(h): el número de bordes en el camino máslargo a una hoja
▪ Altura de un nodo negro (bh): es igual a la altura del nodocuando sólo se tienen en cuenta los nodos negros (incluida lahoja)del subárbol cuya raíz es el nodo.
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
5
26
17 41
30 47
38 50
NIL NIL
NIL
NIL NIL NIL NIL
NIL
h = 4
h = 3
h = 2
h = 1
h = 1
h = 2
h = 1
bh = 2
bh = 2
bh = 1
bh = 1
bh = 1
bh = 1
bh = 1
Operaciones en el árbol
• Las operaciones de árbol de búsqueda binaria como MÍNIMO, MÁXIMO, SUCESOR, PREDECESOR y BÚSQUEDA se ejecutan en tiempo O(h) tiempo.
• En el árbol rojo-negro se ejecuta en un tiempo O(log n).
6
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Inserción• La inserción de un nodo se realiza inicialmente igual que en un
árbol binario de búsqueda.
• Como las hojas deben ser negras, al nuevo nodo “x” se le da el color rojo.
7
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
z
y t
x
• De ésta manera no se viola la segunda condición (altura negra), aunque se puede violar la primera (el padre del nodo insertado puede ser rojo).
Caso 1
• Solución: Si x es rojo y padre y tío son rojo, repintamos a estos últimos de negro y al padre de ambos de rojo. Puede darse el problema de que el padre de z sea rojo y se viole de nuevo la primera condición.
• Iteración siguiente: El nodo que se comprueba ahora es z. 8
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
z
y t
xx
z
y t
Caso 2
• Solución: Se efectúa una rotación x-y. Esto no resuelve el problema, pero hace que ahora el nodo que hay que comprobar sea un hijo izquierdo y por lo tanto se aplique el caso siguiente.
• Iteración siguiente: El nodo que se comprueba ahora es y. Se caerá en el Caso 3. 9
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
z
y
tx
α
β
h
z
y t
x
α β
Caso 3
• Solución: Se efectúa una rotación(z-y), se cambia de color a z e y. Esto resuelve el problema.
• Iteración siguiente: El árbol cumple las condiciones. Se termina el bucle. 10
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
z
x
ty
h
zx
t
y
h
Borrar• La operación se lleva a cabo de la misma manera que en los árboles
binarios de búsqueda:• Se busca el nodo a borrar (como los nodos hojas son nodos nulos, en caso de
existir el nodo a borrar debe tener siempre dos hijos).
• Si es un nodo con dos hijos no nulos, se busca el mayor nodo (el más a la derecha) de su subárbol izquierdo (lo llamamos “x”), se intercambia sus datos con el nodo a borrar y se pasa a borrar el nodo “x”. Como es el nodo más a la derecha, su hijo derecho será nulo.
• Si el nodo suprimido “x” fuese negro, entonces, las ramas que pasen por “x” tienen un nodo negro menos, lo que viola la condición de los árboles rojo-negros. En este caso es necesario ajustar colores.
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
11
Caso 1
• El árbol sigue siendo rojo-negro, por lo que no hay que realizar ningún ajuste.
Estr
uct
ura
s d
e d
ato
s (P
rof.
Edga
rdo
A
. Fra
nco
)
12
z
tp
h
z
th
Caso 2
• Nodo “a” negro con hermano rojo(nodo d).
• A hermano se le pinta negro(nodo d), a padre de rojo(nodo b) y rotar a la izquierda.
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
13
b
a d
c e
d
c
eb
Caso 3
• Un nodo “a” y hermano negro(nodo d), el hijo derecho de hermano negro(nodo e) y el izquierdo rojo.
• Al hijo izquierdo del hermano (nodo c) se le pinta negro y a hermano de rojo (nodo d).
• Rotar a la derecha para equilibrar
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
14
b
a d
c e
b
d
c
e
Caso 4
• Un nodo “a” y hermano negro, el hijo derecho de hermano rojo(nodo e) y el izquierdo negro.• A padre se le pinta negro(nodo b), a hermano se pinta del color que tenía
padre(nodo d) y al hijo derecho de hermano(nodo e) también negro.
• Rotar a la izquierda para equilibrar alturas negras.
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
15
b
a d
c e
d
eb
c
Rotaciones• Las rotaciones son necesarias para que cumpla las
propiedades un árbol rojo-negro, ya que en los casos como inserción y eliminación al final hay ocasiones que se necesita restructurar el árbol, por lo cual existen la rotación:
• La Rotación izquierda
• La Rotación derecha
• Es la misma rotación que ocupan los arboles binarios de búsqueda.
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
16
Rotación derecha
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
17
p
x
C
BA
p
x
C
BA
Rotación izquierda
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
18
p
x
CB
A
p
x
CB
A
Animaciones Web
• https://www.cs.usfca.edu/~galles/visualization/RedBlack.html
• http://tommikaikkonen.github.io/rbtree/#
• http://www.cs.armstrong.edu/liang/animation/web/RBTree.html
19
Estr
uct
ura
s d
e d
ato
s1
2 Á
rbo
l Ro
jo-N
egro
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez