Supponiamo che la seguente definizione di un albero rosso-nero:
- È un albero di ricerca binario.
- Ogni nodo è colorato in rosso o nero. La radice è nera
- Due nodi collegati da un bordo non possono essere rossi contemporaneamente.
- Qui dovrebbe esserci una buona definizione di una foglia NIL, come su wiki. La foglia NIL è di colore nero.
- Un percorso dalla radice a qualsiasi foglia NIL contiene lo stesso numero di nodi neri.
Domanda
Supponiamo di aver implementato le operazioni insert
e delete
per l'albero rosso-nero. Ora, se ti viene dato un albero rosso-nero valido, c'è sempre una sequenza insert
e delete
operazioni che lo costruiscono?
Motivazione
Questa domanda è motivata da questa domanda e dalla discussione di questa domanda .
Personalmente, credo che se immagini un albero rosso-nero valido costituito solo da nodi neri (il che implica che stai immaginando un albero perfettamente bilanciato), c'è una sequenza insert
e delete
operazioni che lo costruiscono. Tuttavia,
- Non so come dimostrarlo accuratamente
- Sono anche interessato al caso più generale
insert
e delete
per costruire un albero rosso-nero valido costituito solo da nodi neri . Usa inserzioni / eliminazioni per creare un albero di altezza . In primo luogo, possiamo creare un albero rosso-nero perfettamente bilanciato in modo molto ampio usando inserzioni, quindi utilizzando inserimenti e la stessa quantità di eliminazioni lo ridipingono in un albero completamente nero. Il trucco qui è di salire di volte lo strato rosso più basso sull'albero fino a raggiungere la radice. h 2 h + 1 - 1 h ∗ 2 h - 1 h
insert
e delete
operazioni?
insert
e delete
; ci possono essere diversi modi per eseguire queste operazioni. b) Poiché gli alberi RB sono essenzialmente alberi B di ordine 4, si può cercare ispirazione. I dettagli possono rivelarsi complicati poiché la mappatura da RB a B (e / o indietro) non è unica.