Supongamos la siguiente definición de un árbol rojo-negro:
- Es un árbol de búsqueda binario.
- Cada nodo es de color rojo o negro. La raíz es negra.
- Dos nodos conectados por un borde no pueden ser rojos al mismo tiempo.
- Aquí debería haber una buena definición de una hoja NIL, como en wiki. La hoja NIL es de color negro.
- Una ruta desde la raíz a cualquier hoja NIL contiene el mismo número de nodos negros.
Pregunta
Supongamos que ha implementado las operaciones insert
y delete
para el árbol rojo-negro. Ahora, si se le da un árbol rojo-negro válido, ¿hay siempre una secuencia insert
y delete
operaciones que lo construyan?
Motivación
Esta pregunta está motivada por esta pregunta y por la discusión de esta pregunta .
Personalmente, creo que si imaginas un árbol rojo-negro válido que consta solo de nodos negros (lo que implica que estás imaginando un árbol perfectamente equilibrado), hay una secuencia insert
y delete
operaciones que lo construyen. Sin embargo,
- No sé cómo demostrar con precisión que
- También estoy interesado en el caso más general
insert
y delete
para construir un árbol rojo-negro válido que consta solo de nodos negros . Utiliza inserciones / eliminaciones para crear un árbol de altura . Primero, podemos crear un árbol rojo-negro perfectamente equilibrado en primer lugar usando inserciones, luego usando inserciones y la misma cantidad de eliminaciones repítelo en Un árbol completamente negro. El truco aquí es subir veces la capa roja más baja del árbol hasta que llegue a la raíz.
insert
y delete
operaciones?
insert
y delete
; Puede haber varias formas de hacer estas operaciones. b) Dado que los árboles RB son esencialmente árboles B de orden 4, se puede buscar inspiración. Los detalles pueden resultar complicados ya que la asignación de RB a B (y / o al revés) no es única.