Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created December 30, 2022 22:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/a053e27e7c50f60a09e1a82b758dac6a to your computer and use it in GitHub Desktop.
Save parzibyte/a053e27e7c50f60a09e1a82b758dac6a to your computer and use it in GitHub Desktop.
public void eliminar(int busqueda) {
this.raiz = this.eliminar(this.raiz, busqueda);
}
private Nodo eliminar(Nodo nodo, int busqueda) {
if (nodo == null) {
return nodo;
}
if (busqueda > nodo.getDato()) {
nodo.setDerecha(this.eliminar(nodo.getDerecha(), busqueda));
} else if (busqueda < nodo.getDato()) {
nodo.setIzquierda(this.eliminar(nodo.getIzquierda(), busqueda));
} else {
if (nodo.getIzquierda() == null && nodo.getDerecha() == null) {
nodo = null;
} else if (nodo.getDerecha() != null) {
nodo.setDato(this.sucesor(nodo));
nodo.setDerecha(this.eliminar(nodo.getDerecha(), nodo.getDato()));
} else {
nodo.setDato(this.predecesor(nodo));
nodo.setIzquierda(this.eliminar(nodo.getIzquierda(), nodo.getDato()));
}
}
return nodo;
}
private int sucesor(Nodo nodo) {
nodo = nodo.getDerecha();
while (nodo.getIzquierda() != null) {
nodo = nodo.getIzquierda();
}
return nodo.getDato();
}
private int predecesor(Nodo nodo) {
nodo = nodo.getIzquierda();
while (nodo.getDerecha() != null) {
nodo = nodo.getDerecha();
}
return nodo.getDato();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment