1 © alberto montresor algoritmi e strutture dati alberi binari di ricerca alberto montresor...
TRANSCRIPT
![Page 1: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/1.jpg)
1© Alberto Montresor
Algoritmi e Strutture DatiAlberi binari di ricerca
Alberto MontresorUniversità di Trento
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
![Page 2: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/2.jpg)
2© Alberto Montresor
DizionariDizionari
✦Dizionario
✦Insieme dinamico che implementa le seguenti funzionalità
Item lookup(Item k)
insert(Item k, Item v)
remove(Item k)
✦Esempi di implementazione
✦Array ordinato✦ Ricerca O(log n), inserimento/cancellazione O(n)
✦Lista non ordinata✦ Ricerca/cancellazione O(n), inserimento O(1)
![Page 3: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/3.jpg)
3© Alberto Montresor
Alberi binari di ricerca (ABR)Alberi binari di ricerca (ABR)
✦Idea “ispiratrice”
✦Portare l'idea di ricerca binaria in un albero
✦Definizione
✦Ogni nodo u contiene una chiave u.key associata ad un valore u.value
✦Le chiavi appartengono ad un insieme totalmente ordinato
✦Proprietà
✦ Le chiavi dei nodi del sottoalbero sinistro di u sono minori di u.key
✦ Le chiavi dei nodi del sottoalbero destro di u sono maggiori di u.key
10
6 15
4 8 12 18
![Page 4: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/4.jpg)
4© Alberto Montresor
Alberi binari di ricerca (ABR)Alberi binari di ricerca (ABR)
✦Proprietà di ricerca
✦Le proprietà 1. e 2. permettono di realizzare un algoritmo di ricerca dicotomica
✦Domanda – Proprietà di ordine
✦Come devo visitare l'albero per ottenere la lista ordinata dei valori?
✦Dettagli implementativi
✦Ogni nodo deve mantenere✦Figlio sinistro, destro✦Padre✦Chiave✦Valore
Figliosinistro
Padre
Figliodestro
Key, Value
![Page 5: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/5.jpg)
5© Alberto Montresor
Alberi binari di ricerca: SpecificaAlberi binari di ricerca: Specifica
✦Operazioni ammesse su ABR
Tree key()
Tree value()
Tree left()
Tree right()
Tree parent()
Tree lookup(Item k)
Tree insert(Item k, Item d)
Tree delete()
Tree successorNode(Item T)
Tree predecessorNode(Item T)
Tree min()
Tree max()
![Page 6: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/6.jpg)
6© Alberto Montresor
4 < 64 sta nel sottoalbero sinistro di 6
4 < 64 sta nel sottoalbero sinistro di 6
Ricerca: esempioRicerca: esempio
Ricerca del valore 4Ricerca del valore 4
66
22 88
11 44
33
T
![Page 7: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/7.jpg)
7© Alberto Montresor
4 > 24 sta nel sottoalbero destro di 2
4 > 24 sta nel sottoalbero destro di 2
Ricerca: esempioRicerca: esempio
T
66
22 88
11 44
33
Ricerca del valore 4Ricerca del valore 4
![Page 8: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/8.jpg)
8© Alberto Montresor
4 = 4trovato!
4 = 4trovato!
Ricerca: esempioRicerca: esempio
T
66
22 88
11 44
33
Ricerca del valore 4Ricerca del valore 4
![Page 9: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/9.jpg)
9© Alberto Montresor
Ricerca: ImplementazioneRicerca: Implementazione
Ricorsiva
Iterativa
![Page 10: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/10.jpg)
10
© Alberto Montresor
Ricerca del minimo e del massimo: EsempiRicerca del minimo e del massimo: Esempi
Sottoalbero conradice 2:
- minimo 1
- massimo 4 66
22
11
33
4
T
Sottoalbero conradice 8:
- minimo 8
- massimo 15
88
44 1212
151599
![Page 11: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/11.jpg)
11
© Alberto Montresor
Ricerca del minimo e del massimo: Pseudo-codiceRicerca del minimo e del massimo: Pseudo-codice
![Page 12: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/12.jpg)
12
© Alberto Montresor
Ricerca del successore/predecessoreRicerca del successore/predecessore
✦Definizione
✦Il successore di un nodo u è il più piccolo nodo maggiore di u
✦Due casi
✦u ha un figlio destro
✦Il successore u' è il minimodel sottoalbero destro di u
✦Esempio: successore di 2 è 3
T
6
1 4
8
3
12
159
2
u
u'
![Page 13: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/13.jpg)
13
© Alberto Montresor
Ricerca del successore/predecessoreRicerca del successore/predecessore
✦Definizione
✦Il successore di un nodo u è il più piccolo nodo maggiore di u
✦Due casi
✦u non ha un figlio destro
✦Il successore è il primo avo u' tale per cui u sta nel sottoalbero sinistro di u'
✦Esempio: successore di 4 è 6
T
66
11 33
88
44
1212
151599
22
u
u'
![Page 14: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/14.jpg)
14
© Alberto Montresor
Ricerca del successore: Pseudo-codice (iterativo)Ricerca del successore: Pseudo-codice (iterativo)
![Page 15: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/15.jpg)
15
© Alberto Montresor
Ricerca: costo computazionaleRicerca: costo computazionale
✦In generale
✦Le operazioni di ricerca sonoconfinate ai nodi posizionati lungo un singolo percorso (path) dalla radice ad una foglia
✦Tempo di ricerca: O(h)
✦Domanda
✦Qual è il caso pessimo?
✦Domanda
✦Qual è il caso ottimo?
h = altezza dell’albero
![Page 16: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/16.jpg)
16
© Alberto Montresor
InserimentoInserimento
T
5 < 6Inserimento valore 5
66
22
11
33
4
88
44 1212
151599
5 > 2
55
5 > 4
![Page 17: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/17.jpg)
17
© Alberto Montresor
Inserimento: pseudo-codice (iterativo)Inserimento: pseudo-codice (iterativo)
![Page 18: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/18.jpg)
18
© Alberto Montresor
Inserimento: pseudo-codice (iterativo)
![Page 19: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/19.jpg)
19
© Alberto Montresor
CancellazioneCancellazione
✦Caso 1: Il nodo u da eliminare non ha figli
✦Semplicemente si elimina
✦Esempio:
✦Eliminazione nodo 5
T
66
22
11
33
4
88
44 1212
15159955
u
![Page 20: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/20.jpg)
20
© Alberto Montresor
CancellazioneCancellazione
✦Caso 2: Il nodo u da eliminare ha un unico figlio f
✦Si elimina u
✦Si attacca f all'ex-padre p di uin sostituzione di u (short-cut)
✦Esempio:
✦Cancellazione di 4
T
66
22
11
33
88
44 1212
151599
u
f
p
![Page 21: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/21.jpg)
21
© Alberto Montresor
CancellazioneCancellazione
✦Caso 3: Il nodo u da eliminare ha due figli
✦Si individua il successore s del nodo uIl successore non ha figlio sinistro
✦Si “stacca” il successore
✦Si attacca l'eventualefiglio destro di s alpadre di s (short-cut)
✦Si copia s su u
✦Si rimuove il nodo s
T
77
22
11
33
88
55 1212
151599s
u
44
66
33
![Page 22: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/22.jpg)
22
© Alberto Montresor
Cancellazione: Pseudo-codiceCancellazione: Pseudo-codice
![Page 23: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/23.jpg)
23
© Alberto Montresor
Cancellazione – Dimostrazione di correttezza
✦Caso 1 - nessun figlio
✦Eliminare foglie non cambia la proprietà di ordine dei nodi rimanenti
✦Caso 2 - solo un figlio (destro o sinistro)
✦Se u è il figlio destro (sinistro) di p, tutti i i valori nel sottoalbero di f sono maggiori (minori) di p
✦Quindi f può essere attaccato come figlio destro (sinistro) di p al posto di u
✦Caso 3 - due figli
✦Il successore s ✦è sicuramente maggiore di tutti i nodi del sottoalbero sinistro di u✦è sicuramente minore di tutti i nodi del sottoalbero destro di u
✦Quindi può essere sostituito a u
![Page 24: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/24.jpg)
24
© Alberto Montresor
Modifica: costo computazionaleModifica: costo computazionale
✦In generale
✦Le operazioni di modifica sonoconfinate ai nodi posizionati lungo un singolo percorso (path) dalla radice ad una foglia
✦Tempo di ricerca: O(h)
h = altezza dell’albero
![Page 25: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/25.jpg)
25
© Alberto Montresor
Complessità mediaComplessità media
✦Qual è l'altezza media di un albero di ricerca?
✦Caso generale (inserimenti + cancellazione)✦Difficile da trattare
✦Caso “semplice”: inserimenti in ordine casuale✦E' possibile dimostrare che l'altezza media è O(log n)
✦Fattore di bilanciamento
✦Il fattore di bilanciamento β(v) di un nodo v è la massima differenza di altezza fra i sottoalberi di v
✦Esempio: albero perfetto:
✦β(v)=0 per ogni nodo v
✦In generale:
✦Sono necessarie tecniche per mantenere bilanciato l'albero
![Page 26: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/26.jpg)
26
© Alberto Montresor
Algoritmi di bilanciamentoAlgoritmi di bilanciamento
✦Alberi AVL (Adel'son-Vel'skii e Landis, 1962)
✦β(v) ≤ 1 per ogni nodo v
✦Bilanciamento ottenuto tramite rotazioni
✦B-Alberi (Bayer, McCreight, 1972)
✦β(v) = 0 per ogni nodo v
✦Specializzati per strutture in memoria secondaria
✦Alberi 2-3 (Hopcroft, 1983)
✦β(v) = 0 per ogni nodo v
✦Bilanciamento ottenuto tramite merge/split, grado variabile
✦B-alberi binari (Andersson, 1993)
✦Alberi Red-Black (Bayer, 1972)
![Page 27: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/27.jpg)
27
© Alberto Montresor
T3
T3
T1
T2
Esempio di rotazione
v
u
T1T2
v
u
![Page 28: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/28.jpg)
28
© Alberto Montresor
Alberi Rosso-Nero (Red-Black Treee, RB-Tree)
✦Un albero Red-Black è un albero binario di ricerca in cui:
✦Ogni nodo è colorato di rosso o di nero
✦Le chiavi vengono mantenute solo nei nodi interni dell’albero
✦Le foglie sono costituite da nodi nil
✦Un albero Red-Black deve soddisfare i seguenti vincoli:
1. La radice è nera
✦ Tutte le foglie sono nere
✦ Entrambi i figli di un nodo rosso sono neri
✦ Tutti i cammini semplici da ogni nodo u ad una delle foglie contenute nel sottoalbero radicato in u hanno lo stesso numero di nodi neri
![Page 29: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/29.jpg)
29
© Alberto Montresor
Alberi Red-Black
✦Ogni nodo mantiene
✦parent puntatore al padre
✦left, right puntatori ai figli sinistro/destro
✦color colore
✦key, data chiave e dati
✦Nodo Nil
✦nodo sentinella il cui scopo è evitare di trattare diversamente i puntatori ai nodi dai puntatori nil
✦al posto di un puntatore nil, si usa un puntatore ad un nodo Nil
✦ne esiste solo uno, per risparmiare memoria
✦nodo con figli Nil → foglia nell'ABR corrispondente
![Page 30: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/30.jpg)
30
© Alberto Montresor
Alberi Red-Black
✦Definizione:
✦Il numero di nodi neri lungo ogni percorso da un nodo v (escluso) ad ogni foglia (inclusa) del suo sottoalbero è detto altezza nera di v, indicato b(v)
✦Ben definito perché tutti i percorsi hanno lo stesso numero di nodi neri (regola 4)
✦Definizione:
✦L’altezza nera di un albero Red-Black è pari all’altezza nera della sua radice
![Page 31: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/31.jpg)
31
© Alberto Montresor
Alberi Red-Black: esempio IAlberi Red-Black: esempio I
3. Entrambi i figli di un nodo rosso sono neri.Ma un nodo nero può avere figli neri!
30
70
85
5
60
80
10
90
15
20
50
40 55
65
NilNil
Nil Nil Nil
Nil Nil NilNil
Nil Nil Nil Nil NilNil
![Page 32: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/32.jpg)
32
© Alberto Montresor
Alberi Red-Black: esempio IAlberi Red-Black: esempio I
4. Ogni percorso da un nodo interno ad un nodo Nil ha lo stesso numero di nodi neri.Altezza nera di questo albero: 3
30
70
85
5
60
80
10
90
15
20
50
40 55
65
NilNil
Nil Nil Nil
Nil Nil NilNil
Nil Nil Nil Nil NilNil
![Page 33: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/33.jpg)
33
© Alberto Montresor
Alberi Red-Black: più colorazioni sono possibiliAlberi Red-Black: più colorazioni sono possibili
30
70
85
5
60
80
10
90
15
20
50
40 55
65
NilNil
Nil Nil Nil
Nil Nil NilNil
Nil Nil Nil Nil NilNil
Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil
![Page 34: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/34.jpg)
34
© Alberto Montresor
Alberi Red-Black: più colorazioni sono possibiliAlberi Red-Black: più colorazioni sono possibili
30
70
85
5
60
80
10
90
15
20
50
40 55
65
NilNil
Nil Nil Nil
Nil Nil NilNil
Nil Nil Nil Nil NilNil
Albero Red-Black con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil
![Page 35: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/35.jpg)
35
© Alberto Montresor
Alberi Red-Black: colorazione diversa, altezza nera diversaAlberi Red-Black: colorazione diversa, altezza nera diversa
30
70
8560
80
10
90
15
20
50 65Nil Nil Nil Nil
Nil Nil Nil Nil Nil Nil NilNil
Albero RB con 3 nodi neri lungo ogni percorso dalla radice ai nodi Nil
![Page 36: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/36.jpg)
36
© Alberto Montresor
Alberi Red-Black: colorazione diversa, altezza nera diversaAlberi Red-Black: colorazione diversa, altezza nera diversa
30
70
8560
80
10
90
15
20
50 65Nil Nil Nil Nil
Nil Nil Nil Nil Nil Nil NilNil
Stesso albero con 2 nodi neri lungo ogni percorso dalla radice ai nodi Nil
![Page 37: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/37.jpg)
37
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
![Page 38: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/38.jpg)
38
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Per vincolo sull'altezza nera ci possono essere al più 3 nodi neri lungo un percorso!
![Page 39: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/39.jpg)
39
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Impossibile!Perché dovremmo violare vincolo 3
La radice è nera. Supponiamo che 60 e 70 siano entrambi neri.
![Page 40: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/40.jpg)
40
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Quindi uno di questidue nodi deve essererosso
![Page 41: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/41.jpg)
41
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Impossibile per ilvincolo sulla lunghezza
Proviamo a colorare di rosso il nodo 60.Esiste un percorso con 2 nodi neriEsiste un percorso con 3 nodi neri
![Page 42: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/42.jpg)
42
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Esistono due percorsicon 2 soli nodi neri
Proviamo a colorare di rosso il nodo 70
![Page 43: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/43.jpg)
43
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Per vincolo 4 e il vincolo 3, ci possono essere al più 2 nodi neri lungo un percorso!
![Page 44: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/44.jpg)
44
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Questa sarebbel’unica possibilità!
Impossibile!Perché dovremmo violare vincolo 1
Per vincolo 4 e il vincolo 3, ci possono essere al più 2 nodi neri lungo un percorso!
![Page 45: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/45.jpg)
45
© Alberto Montresor
Alberi Red-Black: questo albero può essere un albero RB?Alberi Red-Black: questo albero può essere un albero RB?
30
70
6010
15
20
50Nil Nil Nil Nil Nil Nil
40 55
Nil Nil NilNil
85
Nil
Questo albero NON può essere un albero Red-Black!
![Page 46: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/46.jpg)
46
© Alberto Montresor
Alberi Red-Black: ProprietàAlberi Red-Black: Proprietà
✦Da cui segue:
✦Le operazioni di ricerca hanno costo O(log n)
✦Cosa succede per le operazioni di modifica?
![Page 47: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/47.jpg)
47
© Alberto Montresor
InserimentiInserimenti
✦Durante la modifica di un albero Red-Black:
✦è possibile che le condizioni di bilanciamento risultino violate.
✦Quando le proprietà Red-Black vengono violate si può agire:
✦modificando i colori nella zona della violazione;
✦operando dei ribilanciamenti dell’albero tramite rotazioni:✦Rotazione destra✦Rotazione sinistra
![Page 48: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/48.jpg)
48
© Alberto Montresor
Rotazione a sinistraRotazione a sinistra
A
B C
y
x
p
✦Operazioni
(1) far diventare B figlio destro di x
(2) far diventare x il figlio sinistro di y
(3) far diventare y figlio di p, il vecchio padre di x
![Page 49: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/49.jpg)
49
© Alberto Montresor
Rotazione a sinistraRotazione a sinistra
A B
C
y
x
p
✦Operazioni
(1) far diventare B figlio destro di x
(2) far diventare x il figlio sinistro di y
(3) far diventare y figlio di p, il vecchio padre di x
![Page 50: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/50.jpg)
50
© Alberto Montresor
Rotazione a sinistraRotazione a sinistra
A B
C
y
x
p
✦Operazioni
(1) far diventare B figlio destro di x
(2) far diventare x il figlio sinistro di y
(3) far diventare y figlio di p, il vecchio padre di x
![Page 51: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/51.jpg)
51
© Alberto Montresor
Inserimento in alberi Red-Black
✦Inserimento
✦Ricerca della posizione usando la stessa procedura usata per gli alberi binari di ricerca
✦Coloriamo il nuovo nodo di rosso
✦Quale delle quattro proprietà può essere violata?
✦Ripasso:
✦la radice è nera
✦i nodi Nil sono neri;
✦se un nodo è rosso, allora entrambi i suoi figli sono neri;
✦ogni percorso da un nodo interno ad una foglia ha lo stesso numero di nodi neri
![Page 52: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/52.jpg)
52
© Alberto Montresor
Come modificare la insertNode()
balanceTree(n)
![Page 53: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/53.jpg)
53
© Alberto Montresor
Inserimento in alberi Red-Black
✦Come sistemare:
✦Ci spostiamo verso l’alto lungo il percorso di inserimento ✦per ripristinare la proprietà 3 (red-black)✦spostando le violazioni verso l’alto rispettando il vincolo 4 (mantenendo l’altezza nera dell’albero)
✦Al termine, coloriamo la radice di nero
✦Nota
✦Le operazioni di ripristino sono necessarie solo quando due nodi consecutivi sono rossi!
![Page 54: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/54.jpg)
54
© Alberto Montresor
balanceNode(Tree t)
✦Nodi coinvolti
✦Il nodo inserito t
✦Suo padre p
✦Suo nonno n
✦Suo zio z
p
t
n
z
![Page 55: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/55.jpg)
55
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 1:
✦Nuovo nodo t non ha padre
✦Primo nodo ad essere inserito osiamo risaliti fino alla radice
✦Si colora t di nero
✦Caso 2
✦Padre p di t è nero
✦Nessun vincolo violato
![Page 56: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/56.jpg)
56
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 1:
✦Nuovo nodo t non ha padre
✦Primo nodo ad essere inserito
✦Si colora t di nero
✦Caso 2
✦Padre p di t è nero
✦Nessun vincolo violato
![Page 57: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/57.jpg)
57
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 3
✦t rosso
✦p rosso
✦z rosso✦Se z è rosso, è possibile colorare di nero p, z, e di rosso n. ✦Poiché tutti i cammini che passano per z e p passano per n, la lunghezza dei cammini neri non è cambiata. ✦Il problema può essere ora sul nonno:
✦violato vincolo (1), ovvero n può essere una radice rossa ✦violato vincolo (3), ovvero n rosso può avere un padre rosso.
✦Poniamo t = n, e il ciclo continua.
![Page 58: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/58.jpg)
58
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 3
✦t rosso
✦p rosso
✦z rosso
✦Se z è rosso, è possibile colorare di nero p, z, e di rosso n.
✦Poiché tutti i cammini che passano per z e p passano per n, la lunghezza dei cammini neri non è cambiata.
✦Il problema può essere ora sul nonno: ✦violato vincolo (1), ovvero n può essere una radice rossa ✦violato vincolo (3), ovvero n rosso può avere un padre rosso.
✦Poniamo t = n, e il ciclo continua.
![Page 59: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/59.jpg)
59
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 4a,4b
✦t rosso
✦p rosso
✦z nero
✦Si assuma che t sia figlio destro di p e che p sia figlio sinistro di n
✦Una rotazione a sinistra a partire dal nodo p scambia i ruoli di t e p ottenendo il caso (5a), dove i nodi rossi in conflitto sul vincolo (3) sono entrambi figli sinistri dei loro padri
✦I nodi coinvolti nel cambiamento sono p e t, entrambi rossi, quindi la lunghezza dei cammini neri non cambia
![Page 60: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/60.jpg)
60
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 4a,4b
✦t rosso
✦p rosso
✦z nero
✦Si assuma che t sia figlio destro di p e che p sia figlio sinistro di n
✦Una rotazione a sinistra a partire dal nodo p scambia i ruoli di t e p ottenendo il caso (5a), dove i nodi rossi in conflitto sul vincolo (3) sono entrambi figli sinistri dei loro padri
✦I nodi coinvolti nel cambiamento sono p e t, entrambi rossi, quindi la lunghezza dei cammini neri non cambia
![Page 61: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/61.jpg)
61
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 5a,5b
✦t rosso
✦p rosso
✦z nero
✦Si assuma che t sia figlio sinistro di p e p sia figlio sinistro di n
✦Una rotazione a destra a partire da n ci porta ad una situazione in cui t e n sono figli di p
✦Colorando n di rosso e p di nero ci troviamo in una situazione in cui tutti i vincoli Red-Black sono rispettati
✦in particolare, la lunghezza dei cammini neri che passano per la radice è uguale alla situazione iniziale
![Page 62: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/62.jpg)
62
© Alberto Montresor
Inserimento - 7 casi possibili
✦Caso 5a,5b
✦t rosso
✦p rosso
✦z nero
✦Si assuma che t sia figlio sinistro di p e p sia figlio sinistro di n
✦Una rotazione a destra a partire da n ci porta ad una situazione in cui t e n sono figli di p
✦Colorando n di rosso e p di nero ci troviamo in una situazione in cui tutti i vincoli Red-Black sono rispettati
✦in particolare, la lunghezza dei cammini neri che passano per la radice è uguale alla situazione iniziale
![Page 63: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/63.jpg)
63
© Alberto Montresor
All together, now!
![Page 64: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/64.jpg)
64
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil Nil
Nil Nil NilNil
Nil Nil Nil Nil NilNil
16T
t
Nil Nil
![Page 65: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/65.jpg)
65
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil
Nil Nil NilNil
Nil Nil Nil Nil NilNil
16
T
t
Caso 2: nessun cambiamentoNon cambia l’altezza neradi nessun nodo!
Nil Nil
p è nero, t è rosso
![Page 66: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/66.jpg)
66
© Alberto Montresor
Inserimento in alberi Red-Black: Inserimento in alberi Red-Black:
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil
Nil Nil NilNil
Nil Nil Nil Nil NilNil
T42x
Nil Nil
Nil
![Page 67: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/67.jpg)
67
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil
Nil NilNil
Nil Nil Nil Nil NilNil
T
Nil
42
Vincolo 3 è violato
Caso 3: z è rosso
Nil Nil
t
p è rosso, t è rosso
p
n
z
![Page 68: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/68.jpg)
68
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil
Nil NilNil
Nil Nil Nil Nil NilNil
T
Nil
42
Nil Nil
Coloriamo di nero p Coloriamo di nero zColoriamo di rosso n t
p
n
z
p è rosso, t è rosso
![Page 69: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/69.jpg)
69
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil
Nil NilNil
Nil Nil Nil Nil NilNil
T
Nil
42
t
Nil Nil
Il padre del padre di t è il nuovo t
p è rosso, t è rosso
Vincolo 3 è ripristinatoAltri vincoli mai stativiolati
![Page 70: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/70.jpg)
70
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil
Nil NilNil
Nil Nil Nil Nil NilNil
T
Nil
42
t
Nil Nil
Vincolo 3 è nuovamente violato tra il nuovo t e suo padre
Caso 5a: z è nero
p è rosso, t è rosso
p
n
z
![Page 71: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/71.jpg)
71
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
8560
80
10
90
15
20
50
40 55
65Nil Nil Nil
Nil NilNil
Nil Nil Nil Nil NilNil
T
Nil
42
x
Nil Nil
Coloriamo di nero tColoriamo di rosso nRotazione sinistra
Caso 5a: z è nero
p è rosso, t è rosso
![Page 72: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/72.jpg)
72
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
85
60
80
10
90
15
20 50
40 55 65Nil Nil Nil
Nil NilNil Nil
Nil Nil Nil Nil
Nil
T
Nil
42
t
Nil Nil
Caso 5a: z è nero
p è rosso, t è rosso
Vincolo 3 è ripristinatoAltri vincoli mai stativiolati
Abbiamo finito
![Page 73: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/73.jpg)
73
© Alberto Montresor
Inserimento in alberi Red-BlackInserimento in alberi Red-Black
30
70
85
60
80
10
90
15
20 50
40 55 65Nil Nil Nil
Nil NilNil Nil
Nil Nil Nil Nil
Nil
T
Nil
42
x
Nil Nil
L’unico caso un cui si procede a ripristinare verso l’alto è il caso 3. Negli altri casi, si esce dal while e si termina
![Page 74: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/74.jpg)
74
© Alberto Montresor
Inserimento: complessità
✦Totale: O(log n)
✦O(log n) per scendere fino al punto di inserimento
✦O(1) per effettuare l'inserimento
✦O(log n) per risalire e “aggiustare”(caso pessimo – solo nel caso 3)
✦Esiste anche la possibilità di effettuare una “top-down” insertion
✦Scendere fino al punto di inserimento, “aggiustando” l'albero mano a mano
✦Effettuare l'inserimento in una foglia
![Page 75: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/75.jpg)
75
© Alberto Montresor
Cancellazione in RB
✦L’algoritmo di cancellazione per alberi RB è costruito sull’algoritmo di cancellazione per alberi binari di ricerca
✦Dopo la cancellazione si deve decidere se è necessario ribilanciare o meno
✦Le operazioni di ripristino del bilanciamento sono necessarie solo quando il nodo cancellato è nero! (perché?)
![Page 76: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/76.jpg)
76
© Alberto Montresor
Cancellazione in RB
✦Se il nodo “cancellato” è rosso
✦altezza nera invariata
✦non sono stati creati nodi rossi consecutivi
✦la radice resta nera
✦Se il nodo “cancellato” è nero
✦possiamo violare il vincolo 1: la radice può essere un nodo rosso
✦possiamo violare il vincolo 3: se il padre e uno dei figli del nodocancellato erano rossi
✦abbiamo violato il vincolo 4: altezza nera cambiata
✦L’algoritmo balanceDelete(T,t) ripristina la proprietà Red-Black con rotazioni e cambiamenti di colore:
✦ci sono 4 casi possibili (e 4 simmetrici)!
![Page 77: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/77.jpg)
77
© Alberto Montresor
Cancellazione
if u.color = BLACK then balanceDelete(T, t)
![Page 78: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/78.jpg)
78
© Alberto Montresor
Cancellazione - 8 casi possibili
![Page 79: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/79.jpg)
79
© Alberto Montresor
Cancellazione - 8 casi possibiliCancellazione - 8 casi possibili
![Page 80: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/80.jpg)
80
© Alberto Montresor
Cancellazione in RBCancellazione in RB
![Page 81: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/81.jpg)
81
© Alberto Montresor
Cancellazione in RBCancellazione in RB
✦L’operazione di cancellazione è concettualmente complicata!
✦Ma efficiente:
✦Dal caso (1) si passa ad uno dei casi (2), (3), (4)
✦Dal caso (2) si torna ad uno degli altri casi, ma risalendo di un livello l’albero
✦Dal caso (3) si passa al caso (4)
✦Nel caso (4) si termina
✦Quindi
✦In altre parole, è possibile visitare al massimo un numero O(log n) di casi, ognuno dei quali è gestito in tempo O(1)
![Page 82: 1 © Alberto Montresor Algoritmi e Strutture Dati Alberi binari di ricerca Alberto Montresor Università di Trento This work is licensed under the Creative](https://reader034.vdocument.in/reader034/viewer/2022051616/5542eb58497959361e8c2ced/html5/thumbnails/82.jpg)
82
© Alberto Montresor
Esercizi
✦Esercizio - visita non ricorsiva
✦Scrivere l’algoritmo non ricorsivo che effettua un attraversamento in ordine di un ABR
✦Qual è la sua complessità
✦Esercizio - limite inferiore
✦Dimostrare: poiché l'ordinamento basato su confronti di n elementi è Ω(n log n), allora qualunque algoritmo basato su confronti per costruire un ABR è Ω(n log n)
✦Esercizio - proprietà albero
✦Dimostrate che se un nodo in un ABR ha due figli, allora il suo successore non ha un figlio sinistro e il suo predecessore non ha un figlio destro
✦Esercizio
✦L'operazione di cancellazione è commutativa? Nel senso che cancellare x e y oppure cancellare y e x produce lo stesso ABR?