Devo risolvere questo problema per domani, ma sono piuttosto fuso (un pomeriggio per fare un programma sulle liste) e non riesco a trovare una soluzione decente...
Come dovrei fare? la mia idea sarebbe di fare un ciclo che porti la radice al livello H desiderato... e poi da qui contare quanti nodi non sono foglie. E' giusto?Si scriva una funzione NumeroNodi che, ricevendo in ingresso il puntatore alla radice di un albero binario e un intero positivo H, restituisce il numero di nodi NON foglia presenti al livello H nell'albero.
Ho provato a farlo così il codice, ma mi sa che è abominevole...![]()
Il main è all'incirca così:
E questa la funzione...codice:int H; int tot; cout<<"\n\n\tA che livello vuoi contare i nodi non foglia? "; cin>> H; tot=NumeroNodi(radice,H); cout<<"\n\tAl livello "<<H<<" ci sono "<<tot<<" nodi non foglia";![]()
codice:int NumeroNodi(treenode* p,int level) { int cont=0, contsx=0, contdx=0; if(p!=NULL) { for(int i=0; i<=level; i++) p=p->dx; while(p->dx!=NULL || p->sx!=NULL) contdx++; for(int j=0; j<=level; j++) p=p->sx; while(p->dx!=NULL || p->sx!=NULL) contsx++; } cont=contdx+contsx; return cont; }
Grazie dell'aiuto![]()

) e non riesco a trovare una soluzione decente...
Rispondi quotando
