09/11/2022

ÁRBOLES ROJO-NEGRO

 

  • La estructura original fue creada por Rudolf Bayer en 1972, que le dio el nombre de árboles-B binarios simétricos, pero tomó su nombre moderno en un trabajo de Leo J. Guibas y Robert Sedgewick realizado en 1978.

  • Los árboles rojo-negro son un subtipo de árbol binario de búsqueda en el que cada nodo tiene un atributo de color cuyo valor es rojo o negro.

  • Garantiza un tiempo de ejecución de \(O(logn)\), donde n es el número total de elementos en el árbol.

PROPIEDADES.

 

  • Un nodo es Rojo o Negro.

  • La raíz siempre es negra.

  • Un nodo Rojo siempre tendrá hijos negros (Un apuntador Null se tomará en consideración para hacer referencia a un nodo Negro).

  • El número de nodos negros es el mismo en cualquier camino que vaya de la raíz a la hoja.

EJEMPLO GRAFICO.

ROTACIONES.

 

Las rotaciones son necesarias para que cumpla las propiedades de 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.

ALTURA DE UN NODO.

  • Altura de un nodo(h): el número de bordes en el camino más largo a una hoja.
  • Altura de un nodo negro(bh): es igual a la altura del nodo cuando sólo se tienen en cuenta los nodos negros (incluida la hoja) del subárbol cuya raíz es el nodo.

OPERACIONES.

Como un árbol rojo-negro con \(n\) claves es un árbol binario de búsqueda de altura \(O(logn)\),entonces las operaciones de búsqueda:

  • Búsqueda

  • Mínimo

  • Máximo

  • Predecesor

  • Sucesor

BORRAR.

CASO N°1

El árbol sigue siendo rojo-negro. por lo que no hay que realizar ningún ajuste.

BORRAR.

CASO N°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.

BORRAR.

CASO N°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.

BORRAR.

CASO N°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 tenia padre (nodo d)** y al hijo derecho de hermano (nodo e) también negro.

  • Rotar a la izquierda para equilibrar alturas negras.

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.

INSERCIÓN.

CASO N°1

INSERCIÓN EN UN ÁRBOL ROJO-NEGRO

INSERCIÓN.

CASO N°2

INSERCIÓN EN UN ÁRBOL ROJO-NEGRO

INSERCIÓN.

CASO N°3

INSERCIÓN EN UN ÁRBOL ROJO-NEGRO

REFERENCIAS

  • Acuña Cháirez, E. (2012). Principios de Diseño Aplicados a Arboles Binarios de Búsqueda.

  • Laclaustra, J. C. Técnicas Avanzadas de Programación.

  • Serna, L. A., Unanue, R. M., & Artacho, M. R. (2011). Programación y estructuras de datos avanzadas. Editorial Universitaria Ramón Areces.