Comprobar el hijo en vez del nodo actual
static void recorrer(Nodo n) {
visitar(n);
if (n.izq != null) recorrer(n.izq);
if (n.der != null) recorrer(n.der);
}
Funciona, pero se rompe si alguien llama recorrer(null) desde fuera, y duplica la comprobacion en cada hijo. Es mas fragil y mas largo.
static void recorrer(Nodo n) {
if (n == null) return; // una sola guarda, al inicio
visitar(n);
recorrer(n.izq);
recorrer(n.der);
}