Negative_creep
24-09-2010, 11:03
Ciao a tutti, premetto che non ho mai costruito gli alberi in C e molto probabilmente commetterò diversi errori in quello che voglio esporvi. Guardando la struttura Heap, essa (correggetemi se sbaglio) si basa solitamente su un array di dimensione n nel quale vigono le seguenti regole:
- L'elemento di A[i] >= di quello di A[2i]
- L'elemento di A[i] >= di quello di A[2i+1]
- L'elemento di A[n/2] >= di quello di A[n]
L'operazione che vorrei fare io è quella di ordinare semplicemente un albero in maniera decrescente in modo da avere ad ogni inserimento l'elemento di massima priorità nella radice o, se i figli di dx e sx sono uguali alla radice, averli comunque ad una profondità bassa rispetto all'albero, quindi disponibili subito dopo pochi confronti.
Viste le prestazioni migliori in termini di tempo per la ricerca e l'inserimento di un elemento, ho bisogno di utilizzare come struttura dati l'albero.
Per la creazione di questa struttura dati ho seguito il codice presente a questo indirizzo in fondo alla pagina http://it.wikipedia.org/wiki/Albero_binario mi funziona come albero binario, ma volevo sapere da voi che modifiche potevo apportare per rendere l'albero uno heap senza l'ausilio di un array.
- L'elemento di A[i] >= di quello di A[2i]
- L'elemento di A[i] >= di quello di A[2i+1]
- L'elemento di A[n/2] >= di quello di A[n]
L'operazione che vorrei fare io è quella di ordinare semplicemente un albero in maniera decrescente in modo da avere ad ogni inserimento l'elemento di massima priorità nella radice o, se i figli di dx e sx sono uguali alla radice, averli comunque ad una profondità bassa rispetto all'albero, quindi disponibili subito dopo pochi confronti.
Viste le prestazioni migliori in termini di tempo per la ricerca e l'inserimento di un elemento, ho bisogno di utilizzare come struttura dati l'albero.
Per la creazione di questa struttura dati ho seguito il codice presente a questo indirizzo in fondo alla pagina http://it.wikipedia.org/wiki/Albero_binario mi funziona come albero binario, ma volevo sapere da voi che modifiche potevo apportare per rendere l'albero uno heap senza l'ausilio di un array.