Intuitivamente, los "árboles equilibrados" deben ser árboles donde los subárboles izquierdo y derecho en cada nodo deben tener "aproximadamente el mismo" número de nodos.
Por supuesto, cuando hablamos de que los árboles rojo-negros * (ver definición al final) están equilibrados, en realidad queremos decir que están equilibrados en altura y, en ese sentido, están equilibrados.
Supongamos que intentamos formalizar la intuición anterior de la siguiente manera:
Definición: Un árbol binario se llama -balanced, con , si para cada nodo , la desigualdad
mantiene y para cada , hay algún nodo para el cual falla la declaración anterior. es el número de nodos en el subárbol izquierdo de yes el número de nodos debajo del árbol con como raíz (incluida la raíz).
Creo que estos se llaman árboles de equilibrio de peso en parte de la literatura sobre este tema.
Se puede mostrar que si un árbol binario con nodos está equilibrado (para una constante ), entonces la altura del árbol es , manteniendo así la búsqueda agradable propiedades.
Entonces la pregunta es:
¿Hay algún tal que cada árbol rojo-negro suficientemente grande esté equilibrado ?
La definición de árboles rojo-negros que utilizamos (de Introducción a los algoritmos de Cormen et al):
Un árbol de búsqueda binario, donde cada nodo es de color rojo o negro y
- La raíz es negra
- Todos los nodos NULL son negros
- Si un nodo es rojo, sus dos hijos son negros.
- Para cada nodo, todas las rutas desde ese nodo a los nodos NULL descendientes tienen el mismo número de nodos negros.
Nota: no contamos los nodos NULL en la definición de -balanced arriba. (Aunque creo que no importa si lo hacemos).
fuente
Respuestas:
Reclamación : árboles rojo-negro puede ser arbitrariamente in- -balanced.μ
Idea de prueba : llene el subárbol derecho con la mayor cantidad de nodos posible y el izquierdo con la menor cantidad posible de nodos para un número dado de nodos negros en cada ruta raíz-hoja.k
Prueba : defina una secuencia de árboles rojo-negros para que tenga nodos negros en cada ruta desde la raíz hasta cualquier hoja (virtual). Defina conTk Tk k Tk=B(Lk,Rk)
Claramente, todos los son árboles rojo-negros.Tk
Por ejemplo, estos son , y , respectivamente:T1 T2 T3
[ fuente ]
[ fuente ]
[ fuente ]
Ahora verifiquemos que la impresión visual del lado derecho sea enorme en comparación con el izquierdo. No contaré las hojas virtuales; No afectan el resultado.
El subárbol izquierdo de está completo y siempre tiene una altura y, por lo tanto, contiene nodos. El subárbol derecho, por otro lado, está completo y tiene una altura de y, por lo tanto, contiene nodos. Ahora el valor de -balance para la raíz esTk k−1 2k−1 2k−1 22k−1 μ
lo que prueba que no hay según lo solicitado.μ>0
fuente
No. Considere un árbol rojo-negro con la siguiente estructura especial.
Es sencillo verificar que este sea un árbol rojo-negro válido. Pero el número de nodos en el subárbol derecho ( ) es aproximadamente el cuadrado del número de nodos en el subárbol izquierdo ( ).22d+1−1 2d+1−1
fuente