Ciao a tutti ho il seguente problema : dato un albero binario devo scrivere una funzione ricorsiva che restituisce 0 se l albero è un ABR , 1 se non lo è.
La soluzione che avevo pensato ma non riesco ad applicare è quella di utilizzare la visita in ordine e verificare se la successione è crescente. Quindi utilizzando una funzione dove gli passerò due parametri var1 e var2 e verifico di chiamata in chiamata se var1 è minore o uguale di var2 appena var1 è maggiore di var2 dovrei uscire e ritornare 1 se no vado avanti.
Spero di essere stato chiaro nell esposizione del problema e che qualcuno mi aiuti GRAZIE!!!!!!!!
b lo inizializzo nel maincon un valore piu grande che non posso inserire nell albero.codice:int ABR(nod *radice, int *b)/*0 se è un abr, 1 se non lo è*/ { int confronto; if (radice!=NULL) { confronto=ABR(radice->sinistro,&(radice->info)); printf("valore di radice e' %d \n",radice->info); printf("valore di b e' %d \n",*b); if (radice->info>(*b)) return 1;/*dobbiamo uscire visto che il precedente è minore del successivo*/ else confronto=0; /*vado avanti*/ confronto=ABR(radice->destro,&(radice->info)); } return confronto; }