private void agregarRec(T dato, ArbolBinarioDeBusqueda<T> ab) {
   if (ab.getDatoRaiz().compareTo(dato) > 0) { // raiz es mayor que dato
     if (ab.getHijoIzquierdo().esVacio()) ab.getRaiz().setHijoIzquierdo(new NodoBinario<T>(dato));
     else agregarRec(dato, ab.getHijoIzquierdo());
   } else {
     if (ab.getHijoDerecho().esVacio()) ab.getRaiz().setHijoDerecho(new NodoBinario<T>(dato));
     else agregarRec(dato, ab.getHijoDerecho());
   }
 }
 public String porNivel() {
   String resul = "";
   ColaGenerica<ArbolBinarioDeBusqueda<T>> cola = new ColaGenerica<ArbolBinarioDeBusqueda<T>>();
   cola.encolar(this);
   cola.encolar(null);
   while (!cola.esVacia()) {
     ArbolBinarioDeBusqueda<T> abb = cola.desencolar();
     if (abb == null) { // termino nivel
       if (!cola.esVacia()) cola.encolar(null);
       resul += "\n";
     } else {
       resul += abb.getDatoRaiz() + " ";
       if (!abb.getHijoIzquierdo().esVacio()) cola.encolar(abb.getHijoIzquierdo());
       if (!abb.getHijoDerecho().esVacio()) cola.encolar(abb.getHijoDerecho());
     }
   }
   return resul;
 }