Return em arb binaria

tenho esse codigo abaixo que não deixa rodar…

public int nivel(int nivel){
	 	int l = 0;
	 	return nivel(root,nivel,l);
	 }
	 
	 private int  nivel(No nod, int nivel, int l){
	 	
	 	if((nod != null) && (nivel <= l)){
	 	
	 	            l += 1;
	 	            if(nivel == l)
	 	             return 1;
	 	             else
	 	             {
	 	             	nivel(nod.getEsq(),nivel,l);
                        nivel(nod.getDir(),nivel,l);
	 	             }
	       }
	    else
	     return 0;   
	 }

Alguem sabe o erro?
grato…

esse root onde ele ta declarado?