Gin&&Tonic
03-09-2010, 18:50
Ragazzi oggi ho fatto l'esame di algoritmi, dove oltre alla varia teoria dovevo scrivere anche un metodo sugli alberi binari.
Volevo sapere se secondo voi è giusto:
Si consideri la seguente interfaccia che descrive alberi binari in cui la parte
informativa di ogni nodo sia un intero.
public interface AlberoBinario{
int val();
AlberoBinario sin();
AlberoBinario des();
}
Implementare il metodo
boolean Verifica(AlberoBinario a);
che restituisce :
*true , se almeno 2 foglie dell'albero hanno valore maggiore o uguale a 0
*false altrimenti
io lo ho implementato in questo modo:
public boolean Verifica(AlberoBinario a){
int c=CalcolaFogliePositive( a );
if(c>=2)return true;
return false;
}
public static int CalcolaFogliePositive( AlberoBinario a ){
if(a!=null){
if(a.destro()==null && a.sinistro()==null) {
if(a.val()>0) return 1;
else return 0;
}
else return CalcolaFogliePositive(a.destro()) + CalcolaFogliePositive(a.sinistro());;
}//if iniziale
else return 0;
}
Mi chiedeva anche la complessità temporale e spaziale(nel caso peggiore), ed ho scritto ad entrambe O(n), dove n sono i nodi dell'albero.
Secondo voi è giusto?
Volevo sapere se secondo voi è giusto:
Si consideri la seguente interfaccia che descrive alberi binari in cui la parte
informativa di ogni nodo sia un intero.
public interface AlberoBinario{
int val();
AlberoBinario sin();
AlberoBinario des();
}
Implementare il metodo
boolean Verifica(AlberoBinario a);
che restituisce :
*true , se almeno 2 foglie dell'albero hanno valore maggiore o uguale a 0
*false altrimenti
io lo ho implementato in questo modo:
public boolean Verifica(AlberoBinario a){
int c=CalcolaFogliePositive( a );
if(c>=2)return true;
return false;
}
public static int CalcolaFogliePositive( AlberoBinario a ){
if(a!=null){
if(a.destro()==null && a.sinistro()==null) {
if(a.val()>0) return 1;
else return 0;
}
else return CalcolaFogliePositive(a.destro()) + CalcolaFogliePositive(a.sinistro());;
}//if iniziale
else return 0;
}
Mi chiedeva anche la complessità temporale e spaziale(nel caso peggiore), ed ho scritto ad entrambe O(n), dove n sono i nodi dell'albero.
Secondo voi è giusto?