2. Definición:
// Decimos que un árbol rojo-negro es
un árbol binario de búsqueda en
donde cada nodo tiene un atributo
de color el cual es o rojo o
negro.
3. Propiedades
1 Cada nodo o es rojo o es negro
2 La raíz es siempre negro
3 Cada hoja( null) es negra
4 Si un nodo es rojo, entonces, sus hijos son negros
5 Cada camino de un nodo a cualquier descendiente tiene la misma cantidad de
nodos negros
4. Usos de los arboles rojos-negros
Tabla de hash
Tabla de enrutamiento
5. Operación de búsqueda
La búsqueda consiste en acceder a la raíz del
árbol, si el elemento a localizar coincide con
este, la búsqueda ha concluido con éxito, si el
elemento es menor se busca el subárbol
izquierdo y si es mayor en el derecho.
6. Operación de rotación
La estructura de los apuntadores se cambia
mediante la rotación, la cual es una
operación que preserva las propiedades de
un árbol binario de búsqueda.
8. Operación de eliminación
//
La operación se realiza igual que en los árboles binarios de
búsqueda. Se busca el nodo a borrar, si es un nodo con dos hijos no
nulos, se toma el máximo elemento del subárbol izquierdo o el mínimo
del subárbol derecho, y movemos su valor al nodo que es borrado.
Borramos entonces el nodo del que copiamos el valor.
En caso de que el nodo eliminado sea negro, se debe hacer un reajuste
en los colores para que el árbol siga cumpliendo las condiciones
necesarias
9. Caso 1
El árbol sigue siendo rojo-negro, por lo
que no hay que realizar ningún ajuste
10. Caso 2Nodo “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.
11. 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
12. Operación de inserción
//
La inserción de un nodo se hace de manera similar que en un
árbol binario de búsqueda. Al nuevo nodo siempre se le da el
color rojo y su color cambia según los requerimientos del
árbol.
Si el padre del nodo insertado es negro, no se realiza ningun
ajuste.
En caso de que no exista un nodo padre, entonces el nodo
insertado será la raiz y por lo tanto será negro.
Si el nodo padre existe y negro, no se realiza ningun ajuste.
Cuando el nodo padre es rojo se realizan los siguientes
procedimientos:
13. Caso 1: Los nodos del nivel superior son
rojos
En este caso se cambia el color de los nodos y, z y t. Puede que al hacer esto
ahora el padre del nodo z sea rojo y de nuevo se viole la regla que indica que
cada hijo rojo tiene un padre negro por lo que ahora el nodo que se comprueba
es el nodo z
14. Caso 2: nodo x es hijo derecho
Se efectúa una rotación entre x & y, esto no resuelve el problema, por lo que se
debe aplicar el caso siguiente
15. Caso 3: nodo x es hijo izquierdo
Se efectúa una rotación z-y y se cambia el color a z & y, lo que resolvería el
problema
16. Ejercicio de aplicación
Se incumple la propiedad
que indica que la raíz
siempre debe ser negra,
por lo que se debe
cambiar el color del nodo
Valores: 47, 60, 22, 12, 6, 13, 41, 20, 52, 16
17. Valores: 60, 22, 12, 6, 13, 41, 20, 52, 16
Caso 1: se cambia el color al
padre, tío y abuelo. Y en caso
de que el abuelo sea el nodo
raíz se pinta de negro
18. Caso 3: Se usa la rotación a la
derecha entre el nodo abuelo, se
cambia el color al nodo padre y al
nodo abuelo
Valores: 6, 13, 41, 20, 52, 16
19.
20. Caso 1: se cambia de color al nodo
padre, tío y abuelo. Si el abuelo es la
raíz se pinta de negro
Valores: 13, 41, 20, 52, 16
21.
22. Caso 1: se cambia de color al nodo
padre, tío y abuelo.
Valores: 41, 20, 52, 16
23. Caso 2: se usa rotación a la
izquierda por el padre para llevarlo
al caso 3
24. Caso 3: Se usa la rotación a la
derecha entre el nodo abuelo, se
cambia el color al nodo padre y al
nodo abuelo
25.
26. Caso 2: se usa rotación a la
izquierda por el padre para llevarlo
al caso 3
Valores: 52, 16
27. Caso 3: Se usa la rotación a la
derecha entre el nodo abuelo, se
cambia el color al nodo padre y al
nodo abuelo