private NodoBinario<T> eliminarRecu(T dato, NodoBinario<T> nod) { if (dato == null) return nod; // no encontro if (nod.getDato().compareTo(dato) > 0) { if (nod.getHijoIzquierdo() != null) nod.setHijoIzquierdo(this.eliminarRecu(dato, nod.getHijoIzquierdo())); } else if (nod.getDato().compareTo(dato) < 0) { if (nod.getHijoDerecho() != null) nod.setHijoDerecho(this.eliminarRecu(dato, nod.getHijoDerecho())); } else if (nod.getDato().compareTo(dato) == 0) { if (nod.getHijoDerecho() != null && nod.getHijoIzquierdo() != null) { NodoBinario<T> nreemp = this.buscarMayorDeMenores(nod); nod.setDato(nreemp.getDato()); nod.setHijoIzquierdo(this.eliminarRecu(nreemp.getDato(), nod.getHijoIzquierdo())); } else { if (nod.getHijoIzquierdo() != null) nod = nod.getHijoIzquierdo(); else nod = nod.getHijoDerecho(); } } return nod; }