Salve e la prima volta che scrivo, quindi ciao a tutti
ora avrei un problema settimana scorsa ho tenuto l?esame di algoritmi, dove chiedeva ( più o meno come ricordo) che preso un metodo "static boolean dueNodiFoglia( AlberoBinario a, int l)"
restituisce true se e solo se esistono due nodi foglia al livello l con due valori diversi.
Ora l'esame non l'ho passato e quindi mi sto chiedendo se sono io che non ci ho capito niente della ricorsione o se è altro.
Vi scrivo qui il metodo come l'ho interpretato io e come l'ho scritto all'esame , se qualcuno mi puo dire dove ho sbagliato mi farebbe un grande favore 
a ovviamente il programma dava a disposizione i metodi: des() (return albero destro) ,sin() ( return albero sinistro), int val() ( return valore della radice).
Codice PHP:
public static boolean foglia(Nodo a, int x){
if(a==null)return false;
return cerca(a.sin,a.des)&& x>0||foglia(a.des,x-1)||foglia(a.sin,x-1);
}
private static boolean cerca(Nodo a , Nodo b){
if(a==null || b== null)return false;
if(a.des!=null|| a.sin!= null|| b.des!=null|| b.sin!=null)return false;
return a.info!=b.info;
}
Nodo sarebbe l'equivalente di Albero 
p.s il titolo della discussione è appropriato o serve più specifico?