SlideShare uma empresa Scribd logo
1 de 19
Rappresentazione mediante array di un balanced BST
Dato un insieme di elementi, ordinato in ordine crescente, è possibile costruire e rappresentare un albero binario di ricerca su array, in modalità bottom-up. Questa rappresentazione consente di risparmiare lo spazio che verrebbe invece occuppato dai puntatori in una rappresentazione ‘collegata’ dell’albero binario di ricerca. Il nostro BST memorizzerà i valori nelle foglie mentre nei nodi interni si valorizzeranno delle chiavi per condurre la ricerca. Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Dato l’array 	contenente 5 elementi, usualmente lo si rappresenta in modalità ‘collegata’ o ‘linkata’ in un albero binario bilanciato, avente queste sembianze: 3 2 4 1 3 4 5 1 2 Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
3 lvl 0 L’albero è costituito da 3 livelli 	(la radice è al livello 0) Ha 5 foglie e 4 nodi interni Formalmente ha n foglie e n-1 nodi interni È un albero completo e bilanciato Il numero di foglie è compreso tra 2i e 2i+1, cioè il numero massimo di foglie per un albero di livello i, cosiddetto pieno In questo caso abbiamo 22 < 5 < 23, ovvero che 4 < 5 < 8 2 4 lvl 1 1 lvl 2 3 4 5 1 2 Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 lvl 3
Per rappresentare tale albero su array, utilizziamo la stessa rappresentazione che si utilizza con gli heap(max o min) Un nodo alla posizione i di un vettore, avrà il suo figlio sinistro alla posizione 2*i e il suo figlio destro alla posizione 2*i +1, mentre ogni figlio avrà il suo padre alla posizione floor(i/2) Il nostro albero binario su array dovrà essere costituito da (n-1)+n+1 locazioni,  (nodi interni)+ foglie+1 Il +1 finale, riguarda la prima locazione 3 2 4 1 3 4 5 1 2 Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Possedendo già un albero binario in modalità linkata, è possibile trasferirlo su array, facendo valere le proprietà della slide precedente, con un semplice attraversamento dell’albero fatto per livelli Ovvero 	la radice     ha posizione 1 e i suoi figli         e    sono alla posizione 2*1=2 e 	2*1+1=3 . Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2 3 3 2 4 2 4 1 3 4 5 1 2
Ma come costruirlo bottom-up a partire da un array di elementi ordinato in ordine crescente, senza dover creare strutture ‘linkate’ di appoggio? Sicuramente il risultato finale sarà identico a quello prodotto mediante visita per livelli di una struttura linkata di appoggio, ovvero avremmo bisogno dello stesso numero di locazioni È relativamente semplice, a patto di risolvere un problema: il nostro vettore ordinato è presente nell’array finale del BST, ma in maniera diversa Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Notare l’ordine degli elementi Le foglie non sono memorizzate in ordine crescente ‘continuo’, ma spezzettato Questo fatto riflette la disposizione delle foglie a diversi livelli dell’albero Bisogna perciò capire come e quali elementi del nostro array ordinato dobbiamo spostare Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2
Per fare questo ci aiuta una ‘strana’ caratteristica dell’albero e il suo legame con il log2 e le potenze di 2 citate ad inizio presentazione Si è detto che “Il numero di foglie è compreso tra 2i e 2i+1”, cioè abbiamo che le nostre foglie stanno a ‘cavallo’ tra una rappresentazione piena di livello i e una di livello i+1 Dobbiamo capire quali nodi della rappresentazione di livello i, vengono ‘promossi’ ad una rappresentazione di livello successivo Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Nel nostro caso abbiamo che 22 < 5 < 23 , ovvero che 4 < 5 < 8 Dalla figura notiamo che solo un nodo della rappresentazione di livello i ( in questo caso 2) viene promossa a nodo interno per favorire la rappresentazione di livello i+1( in questo caso 3) Se facciamo 5-4, otteniamo il numero di nodi che diventeranno nodi interni, che verranno cioè promossi, ovvero 1 soltanto, che avrà 2 figli Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2
Questo 2, rappresenta il numero di elementi da portare da testa a coda del nostro array di elementi ordinati E cosi facendo otteniamo proprio l’ordine con la quale ci interessa affrontare l’ultima parte della costruzione del BST, ovvero la costruzione bottom-up Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2
Prima però bisogna chiarire come ricavare il nostro 4, senza avere nessuna conoscenza di quanti livelli ci siano nel nostro futuro albero È arrivato il momento di fare uso del log2 Noi possediamo solo il numero degli elementi del nostro array ordinato in ordine crescente, che è 5 (formalmente n) Usando il logaritmo e l’operatore floor() troviamo il nostro valore ricercato, rappresentante il livello i Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
log2 5 = 2.3219... floor(log2 5) = 2 Ora abbiamo il numero di livello i ricercato Per sapere quanti nodi ci sono al livello i, usiamo le potenze di 2, ovvero numeroNodi= 2floor(log2 n)  = 2floor(log2 5)  = 22 = 4 Ed ecco il nostro 4! Ora affrontiamo l’ultima fase di costruzione del BST Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Creiamo un array di grandezza pari alla somma del numero di nodi interni + foglie + 1, nel nostro caso 9, e mettiamo in coda il nostro vettore in input, opportunamente suddiviso Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Per ogni celletta libera, dal fondo verso la cima, dobbiamo ricercare il valore corretto che farà da guida durante la ricerca nell’array Se il ‘nodo’ alla posizione i non ha nipoti, ma solo figli, si prende il valore del figlio sinistro, cioè il più piccolo Altrimenti si va a ricercare il nipote più grande del figlio sinistro del nodo alla posizione i Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 Posizione 4, ha solo figli Idem posizione 3.
Posizione 2, ha nipoti Idem per la posizione 1( root ) Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
Una costruzione di questo tipo, che si occupa di inserire il valore chiave per effettuare le ricerche,  produce l’array desiderato, avente le proprietà di una memorizzazione su array come per l’heap e un notevole risparmio di memoria in puntatori inutilizzati grazie all’uso di formule per ricavare i figli sinistro e destro e il relativo padre Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 3 2 4 1 3 4 5 1 2 1 3 4 5 1 2
Fine Nioi Pier Giuliano  Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2

Mais conteúdo relacionado

Mais de Pier Giuliano Nioi

Implementazione hardware/software di un sistemamultitouch per l'interazione u...
Implementazione hardware/software di un sistemamultitouch per l'interazione u...Implementazione hardware/software di un sistemamultitouch per l'interazione u...
Implementazione hardware/software di un sistemamultitouch per l'interazione u...Pier Giuliano Nioi
 
Presentazione tesi multitouch
Presentazione tesi multitouch Presentazione tesi multitouch
Presentazione tesi multitouch Pier Giuliano Nioi
 
3d Graffiti 3d tag : a concept of augmented reality form mobile devices
3d Graffiti 3d tag : a concept of augmented reality form mobile devices3d Graffiti 3d tag : a concept of augmented reality form mobile devices
3d Graffiti 3d tag : a concept of augmented reality form mobile devicesPier Giuliano Nioi
 
Balanced binary search tree on array
Balanced binary search tree on array Balanced binary search tree on array
Balanced binary search tree on array Pier Giuliano Nioi
 

Mais de Pier Giuliano Nioi (6)

Presentazione
PresentazionePresentazione
Presentazione
 
Eple thesis
Eple thesisEple thesis
Eple thesis
 
Implementazione hardware/software di un sistemamultitouch per l'interazione u...
Implementazione hardware/software di un sistemamultitouch per l'interazione u...Implementazione hardware/software di un sistemamultitouch per l'interazione u...
Implementazione hardware/software di un sistemamultitouch per l'interazione u...
 
Presentazione tesi multitouch
Presentazione tesi multitouch Presentazione tesi multitouch
Presentazione tesi multitouch
 
3d Graffiti 3d tag : a concept of augmented reality form mobile devices
3d Graffiti 3d tag : a concept of augmented reality form mobile devices3d Graffiti 3d tag : a concept of augmented reality form mobile devices
3d Graffiti 3d tag : a concept of augmented reality form mobile devices
 
Balanced binary search tree on array
Balanced binary search tree on array Balanced binary search tree on array
Balanced binary search tree on array
 

Último

Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptcarlottagalassi
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 

Último (19)

Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.ppt
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 

Albero binario di ricerca bilanciato implementato su array - balanced bst on array

  • 1. Rappresentazione mediante array di un balanced BST
  • 2. Dato un insieme di elementi, ordinato in ordine crescente, è possibile costruire e rappresentare un albero binario di ricerca su array, in modalità bottom-up. Questa rappresentazione consente di risparmiare lo spazio che verrebbe invece occuppato dai puntatori in una rappresentazione ‘collegata’ dell’albero binario di ricerca. Il nostro BST memorizzerà i valori nelle foglie mentre nei nodi interni si valorizzeranno delle chiavi per condurre la ricerca. Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 3. Dato l’array contenente 5 elementi, usualmente lo si rappresenta in modalità ‘collegata’ o ‘linkata’ in un albero binario bilanciato, avente queste sembianze: 3 2 4 1 3 4 5 1 2 Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 4. 3 lvl 0 L’albero è costituito da 3 livelli (la radice è al livello 0) Ha 5 foglie e 4 nodi interni Formalmente ha n foglie e n-1 nodi interni È un albero completo e bilanciato Il numero di foglie è compreso tra 2i e 2i+1, cioè il numero massimo di foglie per un albero di livello i, cosiddetto pieno In questo caso abbiamo 22 < 5 < 23, ovvero che 4 < 5 < 8 2 4 lvl 1 1 lvl 2 3 4 5 1 2 Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 lvl 3
  • 5. Per rappresentare tale albero su array, utilizziamo la stessa rappresentazione che si utilizza con gli heap(max o min) Un nodo alla posizione i di un vettore, avrà il suo figlio sinistro alla posizione 2*i e il suo figlio destro alla posizione 2*i +1, mentre ogni figlio avrà il suo padre alla posizione floor(i/2) Il nostro albero binario su array dovrà essere costituito da (n-1)+n+1 locazioni, (nodi interni)+ foglie+1 Il +1 finale, riguarda la prima locazione 3 2 4 1 3 4 5 1 2 Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 6. Possedendo già un albero binario in modalità linkata, è possibile trasferirlo su array, facendo valere le proprietà della slide precedente, con un semplice attraversamento dell’albero fatto per livelli Ovvero la radice ha posizione 1 e i suoi figli e sono alla posizione 2*1=2 e 2*1+1=3 . Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2 3 3 2 4 2 4 1 3 4 5 1 2
  • 7. Ma come costruirlo bottom-up a partire da un array di elementi ordinato in ordine crescente, senza dover creare strutture ‘linkate’ di appoggio? Sicuramente il risultato finale sarà identico a quello prodotto mediante visita per livelli di una struttura linkata di appoggio, ovvero avremmo bisogno dello stesso numero di locazioni È relativamente semplice, a patto di risolvere un problema: il nostro vettore ordinato è presente nell’array finale del BST, ma in maniera diversa Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 8. Notare l’ordine degli elementi Le foglie non sono memorizzate in ordine crescente ‘continuo’, ma spezzettato Questo fatto riflette la disposizione delle foglie a diversi livelli dell’albero Bisogna perciò capire come e quali elementi del nostro array ordinato dobbiamo spostare Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2
  • 9. Per fare questo ci aiuta una ‘strana’ caratteristica dell’albero e il suo legame con il log2 e le potenze di 2 citate ad inizio presentazione Si è detto che “Il numero di foglie è compreso tra 2i e 2i+1”, cioè abbiamo che le nostre foglie stanno a ‘cavallo’ tra una rappresentazione piena di livello i e una di livello i+1 Dobbiamo capire quali nodi della rappresentazione di livello i, vengono ‘promossi’ ad una rappresentazione di livello successivo Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 10. Nel nostro caso abbiamo che 22 < 5 < 23 , ovvero che 4 < 5 < 8 Dalla figura notiamo che solo un nodo della rappresentazione di livello i ( in questo caso 2) viene promossa a nodo interno per favorire la rappresentazione di livello i+1( in questo caso 3) Se facciamo 5-4, otteniamo il numero di nodi che diventeranno nodi interni, che verranno cioè promossi, ovvero 1 soltanto, che avrà 2 figli Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2
  • 11. Questo 2, rappresenta il numero di elementi da portare da testa a coda del nostro array di elementi ordinati E cosi facendo otteniamo proprio l’ordine con la quale ci interessa affrontare l’ultima parte della costruzione del BST, ovvero la costruzione bottom-up Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 1 3 4 5 1 2
  • 12. Prima però bisogna chiarire come ricavare il nostro 4, senza avere nessuna conoscenza di quanti livelli ci siano nel nostro futuro albero È arrivato il momento di fare uso del log2 Noi possediamo solo il numero degli elementi del nostro array ordinato in ordine crescente, che è 5 (formalmente n) Usando il logaritmo e l’operatore floor() troviamo il nostro valore ricercato, rappresentante il livello i Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 13. log2 5 = 2.3219... floor(log2 5) = 2 Ora abbiamo il numero di livello i ricercato Per sapere quanti nodi ci sono al livello i, usiamo le potenze di 2, ovvero numeroNodi= 2floor(log2 n) = 2floor(log2 5) = 22 = 4 Ed ecco il nostro 4! Ora affrontiamo l’ultima fase di costruzione del BST Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 14. Creiamo un array di grandezza pari alla somma del numero di nodi interni + foglie + 1, nel nostro caso 9, e mettiamo in coda il nostro vettore in input, opportunamente suddiviso Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 15. Per ogni celletta libera, dal fondo verso la cima, dobbiamo ricercare il valore corretto che farà da guida durante la ricerca nell’array Se il ‘nodo’ alla posizione i non ha nipoti, ma solo figli, si prende il valore del figlio sinistro, cioè il più piccolo Altrimenti si va a ricercare il nipote più grande del figlio sinistro del nodo alla posizione i Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 16. Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 Posizione 4, ha solo figli Idem posizione 3.
  • 17. Posizione 2, ha nipoti Idem per la posizione 1( root ) Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2
  • 18. Una costruzione di questo tipo, che si occupa di inserire il valore chiave per effettuare le ricerche, produce l’array desiderato, avente le proprietà di una memorizzazione su array come per l’heap e un notevole risparmio di memoria in puntatori inutilizzati grazie all’uso di formule per ricavare i figli sinistro e destro e il relativo padre Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2 3 2 4 3 2 4 1 3 4 5 1 2 1 3 4 5 1 2
  • 19. Fine Nioi Pier Giuliano Università degli Studi di Cagliari Corso di Laurea in Tecnologie Informatiche Algoritmi e Strutture Dati 2