Vai al contenuto
PLC Forum


Linguaccio C problema con albero binario


marco88

Messaggi consigliati

Ciao a tutti, sto preparando un esame e ieri provavo ad esercitarmi sugli alberi binari, ho pensato di fare un semplice programmino che richiede l'input di numeri che vengono inseriti in ordine nell'albero binario, con gli elementi minori o uguali a sinistra e a destra quelli maggiori, e che permetta la visita in-order dell'albero. putroppo non mi funziona bene, e non riesco a capire perche, le funzioni sono tutte ricorsive, e nella funzione di collegamento dei nodi, se notate ho messo la stampa di una lettera "s" se sinistra e "d" se destra, ho fatto cio per vedere quante volte la funzione ricorsiva richimava se stessa, sia per mettere a sinistra che a destra, e ho notato che gli elementi che dovrebbe inserire ad esempio ad un secondo livello dell'albero, li inserisce sempre al primo, visto che la stampa delle lettere me la fa sempre una volta e non due, quindi sono arrivato alla conclusione che il problema sia li, vi metto il link del codice.. spero possiate aiutarmi ,un ciao e un grazie a tutti!

http://www.zshare.net/download/2057801540fc0c0e/

Modificato: da marco88
Link al commento
Condividi su altri siti


per chi potesse interessare, sono riuscito a fare la funzione correttamente

eccovi il codice

dati * annoda(dati *radice,dati *elem)

{

if(radice==NULL)

{

printf(" numero inserito!\n");

return elem;

}

else

{

if((elem->num)<=(radice->num))

{

printf("\ns");

radice->sinistra=annoda(radice->sinistra,elem);

return radice; }

else

{

printf("\nd");

radice->destra=annoda(radice->destra,elem);

return radice; }

}

}

Link al commento
Condividi su altri siti

  • 4 weeks later...

Utilizzo spesso questo tipo di strutture, utili in 1000 occasioni ancheper rappresentare strutture reali, come ad esempio gli organigrammi aziendali.

E' un po' che non gioco coi puntatori poichè per tanti motivi, in primis per produttività e potenza, sono passato definitivamente a C#.

Ho avuto occasione di creare e testare una struttura ad albero (non binaria, ma n-aria) sia a radice singola che a radice multipla e le relative funzioni di ricerca e navigazione. Inoltre ho sviluppato (per la creazione di un organigramma) anche una GUI per l'inserzione dei dati.

Se può esserti utile posso fornirti le classi della struttura dati..... (sempre in C#), avevo sviluppato anche un albero binario in C++ durante la precedente attività lavorativa, ma ho scordato di mantenerla, forse ritenedo che sarei passato definitivamente al C# dopo oltre un anno di sviluppo in VC++ 6 (la parte di struttura dati è bella, ma la parte grafica con MFC è improponibile ed anacronistica)

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...