[Algoritmi] Bilanciamento albero binario di ricerca

Messaggioda matitti » 20/05/2017, 10:52

Ciao a tutti. Devo bilanciare un albero binario di ricerca sbilanciato in python ma trovo delle difficoltà nella formulazione dell'algoritmo.
La mia idea era di prendere tutti gli elementi dell'albero e di riutilizzarli per costruire un nuovo albero binario di ricerca, quindi in questo caso ho già dei vincoli per quanto riguarda la ricostruizione in questione ( se nodo_da_inserire < root, inserisci nel nodo di sinistra). Avendo questa regola da seguire mi riesce difficile pensare ad un modo per controllare anche il bilanciamento dell''albero in questione.
Potreste darmi qualche consiglio?
matitti
Junior Member
Junior Member
 
Messaggio: 185 di 376
Iscritto il: 08/07/2012, 10:40

Re: [Algoritmi] Bilanciamento albero binario di ricerca

Messaggioda apatriarca » 21/05/2017, 17:43

Se hai una lista ordinata di valori allora puoi costruire il tuo albero bilanciato semplicemente dividendo ad ogni passo l'albero "a metà". Scegli cioè il nodo centrale come radice e poi applichi in modo ricorsivo la procedura alla parte della lista che precede il valore e a quella che segue.

In alternativa puoi implementare le operazioni di bilanciamento di un albero binario. Se cerchi su internet o su un manuale gli alberi bilanciati dovresti trovare facilmente pseudocodici su come implementarli. Si tratta di un esercizio o di qualcosa che devi fare per qualche altra ragione?
apatriarca
Moderatore
Moderatore
 
Messaggio: 4632 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Algoritmi] Bilanciamento albero binario di ricerca

Messaggioda matitti » 22/05/2017, 22:04

Grazie per la risposta. Si tratta semplicemente di un esercizio che devo implementare in Python.
matitti
Junior Member
Junior Member
 
Messaggio: 186 di 376
Iscritto il: 08/07/2012, 10:40

Re: [Algoritmi] Bilanciamento albero binario di ricerca

Messaggioda matitti » 23/05/2017, 16:28

Scusate riapro questa conversazione ma ho un dubbio sugli alberi binari diricerca e vorrei una risposta. La mia domanda riguarda l'ordinamento dei nodi (so che alla sinistra della radice ho dei nodi di valore più basso della stessa e a destra di valore più alto), ma, guardando la foto allegata, sarebbe possibile avere al posto del 18 (la foglia in basso) un 46 ad esempio?

Immagine
matitti
Junior Member
Junior Member
 
Messaggio: 187 di 376
Iscritto il: 08/07/2012, 10:40

Re: [Algoritmi] Bilanciamento albero binario di ricerca

Messaggioda apatriarca » 23/05/2017, 16:37

No, perché sarebbe maggiore di 21 e quindi non può stare alla sua sinistra.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4635 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron