Intuitivamente, gli "alberi bilanciati" dovrebbero essere alberi in cui i sottoalberi sinistro e destro di ciascun nodo devono avere "approssimativamente lo stesso" numero di nodi.
Ovviamente, quando parliamo di alberi bilanciati rosso-nero * (vedere la definizione alla fine), intendiamo effettivamente che sono bilanciati in altezza e in tal senso, sono bilanciati.
Supponiamo di provare a formalizzare l'intuizione sopra come segue:
Definizione: un albero binario è chiamato -balanced, con , se per ogni nodo , la disuguaglianza0 ≤ μ ≤ 1 N
contiene e per ogni , esiste un nodo per il quale l'istruzione precedente non riesce. è il numero di nodi nel sottoalbero sinistro di e | N | è il numero di nodi sotto l'albero con N come radice (inclusa la radice).| N L | N | N | N
Credo che questi siano chiamati alberi equilibrati in parte della letteratura su questo argomento.
Si può dimostrare che se un albero binario con nodi è -bilanciato (per una costante ), allora l'altezza dell'albero è , mantenendo così una buona ricerca proprietà.
Quindi la domanda è:
Esiste un tale che ogni albero abbastanza grande rosso-nero è bilanciato ?
La definizione di alberi Rosso-Nero che usiamo (da Introduzione agli algoritmi di Cormen et al):
Un albero di ricerca binario, in cui ogni nodo è colorato in rosso o nero e
- La radice è nera
- Tutti i nodi NULL sono neri
- Se un nodo è rosso, entrambi i suoi figli sono neri.
- Per ciascun nodo, tutti i percorsi da quel nodo ai nodi NULL discendenti hanno lo stesso numero di nodi neri.
Nota: non contiamo i nodi NULL nella definizione di -balanced sopra. (Anche se credo che non importa se lo facciamo).