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...
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.
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?
Ho provato a farlo così il codice, ma mi sa che è abominevole...
Il main è all'incirca così:
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";
E questa la funzione...
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