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).