public void SetRaiz(NodoArbol aux)
 {
     this.raiz = aux;
 }
        public bool EliminarUsuario(string pnickname)
        {
            if (!ArbolVacio())
            {
                if (ExisteUsuario(pnickname))
                {
                    NodoArbol padre = null;
                    NodoArbol aux   = this.raiz;
                    while (aux != null)
                    {
                        if (aux.GetNickname().CompareTo(pnickname) > 0)
                        {
                            padre = aux;
                            aux   = aux.GetHijoIzquierdo();
                        }
                        else if (aux.GetNickname().CompareTo(pnickname) < 0)
                        {
                            padre = aux;
                            aux   = aux.GetHijoDerecho();
                        }
                        else
                        {
                            if (aux.GetHijoIzquierdo() == null && aux.GetHijoDerecho() == null)//caso que no tenga hijos
                            {
                                if (padre == null)
                                {
                                    this.SetRaiz(null);
                                }
                                else
                                {
                                    if (padre.GetHijoIzquierdo() == aux)
                                    {
                                        padre.SetHijoIzquierdo(null);
                                    }
                                    else if (padre.GetHijoDerecho() == aux)
                                    {
                                        padre.SetHijoDerecho(null);
                                    }
                                    aux = null;
                                }
                            }
                            else if (aux.GetHijoIzquierdo() == null || aux.GetHijoDerecho() == null)
                            {
                                if (padre != null)
                                {
                                    if (padre.GetHijoDerecho() == aux)
                                    {
                                        if (aux.GetHijoDerecho() != null)
                                        {
                                            padre.SetHijoDerecho(aux.GetHijoDerecho());
                                            aux.SetHijoDerecho(null);
                                        }
                                        else if (aux.GetHijoIzquierdo() != null)
                                        {
                                            padre.SetHijoDerecho(aux.GetHijoIzquierdo());
                                            aux.SetHijoIzquierdo(null);
                                        }
                                    }
                                    else if (padre.GetHijoIzquierdo() == aux)
                                    {
                                        if (aux.GetHijoDerecho() != null)
                                        {
                                            padre.SetHijoIzquierdo(aux.GetHijoDerecho());
                                            aux.SetHijoDerecho(null);
                                        }
                                        else if (aux.GetHijoIzquierdo() != null)
                                        {
                                            padre.SetHijoIzquierdo(aux.GetHijoIzquierdo());
                                            aux.SetHijoIzquierdo(null);
                                        }
                                    }
                                    aux = null;
                                }
                                else
                                {
                                    if (aux.GetHijoDerecho() != null)
                                    {
                                        this.raiz = aux.GetHijoDerecho();
                                    }
                                    else if (aux.GetHijoIzquierdo() != null)
                                    {
                                        this.raiz = aux.GetHijoIzquierdo();
                                    }
                                    aux = null;
                                }
                            }
                            else
                            {
                                NodoArbol hijoaux      = aux.GetHijoDerecho();
                                NodoArbol padrehijoaux = null;
                                while (hijoaux.GetHijoIzquierdo() != null)
                                {
                                    padrehijoaux = hijoaux;
                                    hijoaux      = hijoaux.GetHijoIzquierdo();
                                }

                                if (hijoaux.GetHijoDerecho() != null && padrehijoaux != null)
                                {
                                    padrehijoaux.SetHijoIzquierdo(hijoaux.GetHijoDerecho());
                                }
                                else if (padrehijoaux != null)
                                {
                                    padrehijoaux.SetHijoIzquierdo(null);
                                }
                                if (padre != null)
                                {
                                    if (padre.GetHijoIzquierdo() == aux)
                                    {
                                        if (aux.GetHijoDerecho() != hijoaux)
                                        {
                                            hijoaux.SetHijoDerecho(aux.GetHijoDerecho());
                                        }
                                        hijoaux.SetHijoIzquierdo(aux.GetHijoIzquierdo());
                                        padre.SetHijoIzquierdo(hijoaux);
                                        aux.SetHijoDerecho(null);
                                    }
                                    else if (padre.GetHijoDerecho() == aux)
                                    {
                                        hijoaux.SetHijoIzquierdo(aux.GetHijoIzquierdo());
                                        if (aux.GetHijoDerecho() != hijoaux)
                                        {
                                            hijoaux.SetHijoDerecho(aux.GetHijoDerecho());
                                        }
                                        padre.SetHijoDerecho(hijoaux);
                                        aux.SetHijoDerecho(null);
                                    }
                                    aux = null;
                                }
                                else
                                {
                                    if (aux.GetHijoDerecho() == hijoaux)
                                    {
                                        hijoaux.SetHijoIzquierdo(aux.GetHijoIzquierdo());
                                        aux.SetHijoDerecho(null);
                                        this.raiz = hijoaux;
                                    }
                                    else
                                    {
                                        hijoaux.SetHijoDerecho(aux.GetHijoDerecho());
                                        hijoaux.SetHijoIzquierdo(aux.GetHijoIzquierdo());
                                        this.raiz = hijoaux;
                                    }
                                    aux = null;
                                }
                            }
                        }
                    }
                    return(true);
                }
                return(false);
            }
            return(false);
        }
Beispiel #3
0
 public void SetHijoIzquierdo(NodoArbol aux)
 {
     this.hijoizquierdo = aux;
 }
 public int Altura(NodoArbol raiz, int alt)
 {
     alt = AuxAltura(raiz, 1, alt);
     return(alt);
 }
Beispiel #5
0
 public void SetHijoDerecho(NodoArbol aux)
 {
     this.hijoderecho = aux;
 }