luxorl
14-02-2006, 12:41
Ciao,
ho come esercizio l'implementazione di un metodo ricorsivo con questa intestatura:
int calcola(AlberoBinario a)
che prende un albero binario e ritorna il numero di foglie che esso possiede.
Un albero binario è un insieme di nodi, che partono da un'unica radice e si raddoppiano ogni volta scendendo di livello... il nodo superiore è detto padre e i due nodi inferiori sono detti figli..
un nodo è detto foglia quando non possiede nessun figlio!!
Quindi il metodo deve ricorsivamente controllare tutti i nodi che non hanno nessun figlio e ritornarne l'esatto numero.
Questa è la soluzione a cui ho pensato.. sapreste dirmi se è giusta o se ho sbagliato qualcosa? Grazie :mano:
public int calcola(AlberoBinario a){
if(a==null) return 0; //se l'albero è uguale a null vuol dire che è finito e io sono uscito fuori dall'ultima foglia
int f=0;
if(a.figlioSX==null&& a.figlioDX==null) f++; //supponendo che a.figlioSX e DX ritornino true se il nodo ha figlio e false altrimenti
f=calcola(a.figlioSX);
f=calcola(a.figlioDX);
return f+=f;
}
Spero di essere stato abbastanza chiaro! Grazie a chi vorrà darmi il suo parere :)
ho come esercizio l'implementazione di un metodo ricorsivo con questa intestatura:
int calcola(AlberoBinario a)
che prende un albero binario e ritorna il numero di foglie che esso possiede.
Un albero binario è un insieme di nodi, che partono da un'unica radice e si raddoppiano ogni volta scendendo di livello... il nodo superiore è detto padre e i due nodi inferiori sono detti figli..
un nodo è detto foglia quando non possiede nessun figlio!!
Quindi il metodo deve ricorsivamente controllare tutti i nodi che non hanno nessun figlio e ritornarne l'esatto numero.
Questa è la soluzione a cui ho pensato.. sapreste dirmi se è giusta o se ho sbagliato qualcosa? Grazie :mano:
public int calcola(AlberoBinario a){
if(a==null) return 0; //se l'albero è uguale a null vuol dire che è finito e io sono uscito fuori dall'ultima foglia
int f=0;
if(a.figlioSX==null&& a.figlioDX==null) f++; //supponendo che a.figlioSX e DX ritornino true se il nodo ha figlio e false altrimenti
f=calcola(a.figlioSX);
f=calcola(a.figlioDX);
return f+=f;
}
Spero di essere stato abbastanza chiaro! Grazie a chi vorrà darmi il suo parere :)