2013-02-24 9 views
5

Stavo leggendo wiki su Red-Black Trees.Albero rosso-nero - Nero Limite di altezza

qualcuno può approfondire il 5 restrizione:

  1. Un nodo è rosso o nero.

  2. La radice è nera.

  3. Tutte le foglie (NIL) sono nere. (Tutte le foglie sono dello stesso colore della radice.)

  4. Entrambi i bambini di ogni nodo rosso sono neri.

  5. Ogni semplice percorso da un determinato nodo a una qualsiasi delle sue foglie discendenti contiene lo stesso numero di nodi neri.

Sto avendo difficoltà a capire da quando dato lo stato dell'esempio RBT dopo the final case of insertion (caso 5 su wiki) ci dà:

Wiki Red Black tree

non 4 e 5 avere un nodo nero in più rispetto a 1,2 e 3?

+2

No, perché 1, 2 e 3 sono nodi neri, dove 4 e 5 non lo sono, quindi tutti e cinque i percorsi hanno due nodi neri. –

+0

@IanMcMahon Come mai 4 e 5 non sono neri? Non dovrebbero essere, a causa della restrizione 3? – bunnybare

+1

sembra certamente così, no? Ora mi stai chiedendo se forse il wiki è sbagliato. Il wiki può essere sbagliato? Questo scuote la mia fede nella solidità del mondo! –

risposta

5

1, 2, 3, 4 e 5 sono tutti sottoalberi. Sappiamo che il colore del nodo radice negli alberi 1, 2 e 3 è nero. Non sappiamo se uno qualsiasi dei nodi 1-5 sia un nodo foglia, perché questo caso di inserimento potrebbe essere stato chiamato ricorsivamente su un N che era il nonno del nodo appena inserito (da inserimento caso 3).

Prima e dopo la rotazione, le sottostrutture 1, 2 e 3 sono tutte sotto un nodo nero (G prima, P dopo) e le sottostrutture 4 e 5 sono sotto due nodi neri (G e U prima, P e U dopo). I sottotitoli 1, 2 e 3 hanno ciascuno un nodo nero in più rispetto ai sottotitoli 4 e 5.

+0

Guardando più dentro, andrò con questo. 1,2,3,4 e 5 non sono foglie di per sé, ma sottostrati. N e G hanno figli neri (teste di 1,2,3), quindi ogni percorso che viene da lì non cambia davvero, dal momento che era lo stesso numero di nodi neri in quel modo come prima. Ogni percorso che passava prima di U aveva U e G come nodi neri (due), quindi dopo la rotazione ogni percorso ora doveva passare attraverso i nodi U e P neri (due). Qual è lo stesso numero di nodi neri di prima. Quindi la restrizione rimane valida, supponendo che la restrizione sia mantenuta sui sottoalberi sotto di loro. – bunnybare

+0

Inoltre, le sottostrutture 1,2 e 3 hanno un nodo nero in più rispetto a 4 e 5 perché 4 e 5 passano attraverso U per ottenere il nodo nero aggiuntivo necessario per la corrispondenza 1,2 e 3. I tipo di prendilo ora – bunnybare

1

L'ho letto profondamente e sembra che ci sia stato un problema con l'immagine.

Poiché N è il nodo che ha appena stato inserire significa che prima dell'ultima insert sotto P c'erano i bambini [1,3] o [2,3] (e l'inserto sia di 2 o 1 rispettivamente). Quindi in quel caso prima dell'ultimo inserto P e U devono essere stati rossi (e 4,5 sono neri).

1

Congratulazioni a James per aver decifrato il diagramma Wiki! Non è sbagliato, solo ambiguo.

La scheda "conversazione" della pagina indica che "I triangoli non sono pensati per rappresentare le foglie ma i sottoalberi Alcuni sottostrutture hanno cerchi neri in alto per indicare che la loro radice deve essere nera."

Apparentemente, i triangoli privi di cerchi rappresentano sottoalberi (incluse le foglie) per i quali il colore del nodo radice e la profondità dell'albero sono sconosciuti (e presumibilmente irrilevanti).

Quindi gli schemi semplicemente non forniscono informazioni sufficienti per dire se la "regola 5" è stata violata o meno. Dobbiamo prenderlo come un dato di fatto che non lo è.