Beispiel #1
0
 public NodoABB Buscar(NodoABB actual, string nickp)
 {
     if (actual == null)
     {
         return(null);
     }
     else
     {
         if (actual.Nickname.CompareTo(nickp) == 0) // se encontro
         {
             return(actual);
         }
         else//seguir buscando
         {
             string nik  = actual.Nickname;
             string nnik = nickp;
             if (nik.CompareTo(nnik) == 1)//buscar izquierda
             {
                 if (actual.Izquierda != null)
                 {
                     return(Buscar(actual.Izquierda, nickp));
                 }
             }
             else if (nik.CompareTo(nnik) == -1)//buscar derecha
             {
                 if (actual.Derecha != null)
                 {
                     return(Buscar(actual.Derecha, nickp));
                 }
             }
         }
     }
     return(null);
 }
Beispiel #2
0
        public string GenerarDatos(NodoABB actual)
        {
            string enlaces   = "";
            string etiquetas = "";

            if (actual != null)
            {
                etiquetas += "NAB_" + actual.Nickname + "[label=\"Nickname: " + actual.Nickname + "\\nCorreo: " + actual.Correo + "\\nPass: "******"\"];\n";
                etiquetas += "subgraph Lista_de_" + actual.Nickname + "{\nnode[shape = circle, style = filled, color = khaki1, fontcolor = blue];\n";
                etiquetas += actual.Juego.GenerarDatos(actual.Juego.Principal, 0, actual.Nickname);
                etiquetas += "}\n";
                if (actual.Juego.Principal != null)
                {
                    etiquetas += "NAB_" + actual.Nickname + " -> Juego1" + actual.Nickname + "\n";
                }
                if (actual.Izquierda != null)
                {
                    enlaces += "NAB_" + actual.Nickname + " -> NAB_" + actual.Izquierda.Nickname + ";\n";
                    enlaces += GenerarDatos(actual.Izquierda);
                }
                if (actual.Derecha != null)
                {
                    enlaces += "NAB_" + actual.Nickname + " -> NAB_" + actual.Derecha.Nickname + ";\n";
                    enlaces += GenerarDatos(actual.Derecha);
                }
            }
            return(etiquetas + enlaces);
        }
Beispiel #3
0
 public void Insertar(NodoABB actual, NodoABB nuevo)
 {
     if (actual != null)
     {
         string nik  = actual.Nickname;
         string nnik = nuevo.Nickname;
         if (nik.CompareTo(nnik) == 1)//insertar izquierda
         {
             if (actual.Izquierda == null)
             {
                 actual.Izquierda = nuevo;
             }
             else
             {
                 Insertar(actual.Izquierda, nuevo);
             }
         }
         else if (nik.CompareTo(nnik) == -1)//insertar derecha
         {
             if (actual.Derecha == null)
             {
                 actual.Derecha = nuevo;
             }
             else
             {
                 Insertar(actual.Derecha, nuevo);
             }
         }
     }
 }
Beispiel #4
0
 public NodoABB BuscarPadre(NodoABB actul, string nick)
 {
     if (actul != null)
     {
         if (actul.Nickname.CompareTo(nick) == 1)
         {
             if (actul.Izquierda != null)
             {
                 if (actul.Izquierda.Nickname.CompareTo(nick) == 0)// si es igual el hijo izquierdo
                 {
                     return(actul);
                 }
                 else
                 {
                     return(this.BuscarPadre(actul.Izquierda, nick));
                 }
             }
         }
         else if (actul.Nickname.CompareTo(nick) == -1)
         {
             if (actul.Derecha != null)
             {
                 if (actul.Derecha.Nickname.CompareTo(nick) == 0)//igual al hijo derecho
                 {
                     return(actul);
                 }
                 else
                 {
                     return(this.BuscarPadre(actul.Derecha, nick));
                 }
             }
         }
     }
     return(null);
 }
Beispiel #5
0
 public NodoABB(string nick, string contraseña, string correo)
 {
     Derecha    = null;
     Izquierda  = null;
     Nickname   = nick;
     Contraseña = contraseña;
     Correo     = correo;
     Conectado  = false;
     Juego      = new Juego();
 }
Beispiel #6
0
        public NodoABB Sucesor(NodoABB encontrado)
        {
            NodoABB actual = encontrado.Derecha;

            while (actual.Izquierda != null)
            {
                actual = actual.Izquierda;
            }
            return(actual);
        }
Beispiel #7
0
        public void Insertar(string nick, string contraseña, string correo)
        {
            NodoABB nuevo = new NodoABB(nick, contraseña, correo);

            if (this.Raiz == null)
            {
                this.Raiz = nuevo;
            }
            else
            {
                //Revisar si existe
                this.Insertar(this.Raiz, nuevo);
            }
        }
Beispiel #8
0
        public void Eliminar(string nick)
        {
            NodoABB encontrado = this.Buscar(this.Raiz, nick);

            if (encontrado != null)
            {
                if (encontrado.Nickname.CompareTo(this.Raiz.Nickname) == 0)// si es la raiz
                {
                    if (this.Raiz.Derecha == null && this.Raiz.Izquierda == null)
                    {
                        this.Raiz = null;
                    }
                    else if (this.Raiz.Derecha == null && this.Raiz.Izquierda != null)
                    {
                        this.Raiz = this.Raiz.Izquierda;
                    }
                    else if (this.Raiz.Derecha != null && this.Raiz.Izquierda == null)
                    {
                        this.Raiz = this.Raiz.Derecha;
                    }
                    else if (this.Raiz.Derecha != null && this.Raiz.Izquierda != null)
                    {
                        NodoABB sucesor  = this.Sucesor(encontrado);
                        string  aux_nick = sucesor.Nickname;
                        encontrado.Correo     = sucesor.Correo;
                        encontrado.Conectado  = sucesor.Conectado;
                        encontrado.Contraseña = sucesor.Contraseña;
                        encontrado.Juego      = sucesor.Juego;
                        this.Eliminar(sucesor.Nickname);
                        encontrado.Nickname = aux_nick;
                    }
                }
                else
                {
                    NodoABB padre       = this.BuscarPadre(encontrado.Nickname);
                    bool    enizquierda = false;
                    if (padre.Izquierda != null)
                    {
                        if (padre.Izquierda.Nickname.CompareTo(encontrado.Nickname) == 0)
                        {
                            enizquierda = true;
                        }
                    }
                    if (encontrado.Izquierda == null && encontrado.Derecha == null)//nodo hoja
                    {
                        if (enizquierda)
                        {
                            padre.Izquierda = null;
                        }
                        else
                        {
                            padre.Derecha = null;
                        }
                    }
                    else if (encontrado.Izquierda != null && encontrado.Derecha == null)//solo hijo izquierda
                    {
                        if (enizquierda)
                        {
                            padre.Izquierda = encontrado.Izquierda;
                        }
                        else
                        {
                            padre.Derecha = encontrado.Izquierda;
                        }
                    }
                    else if (encontrado.Izquierda == null && encontrado.Derecha != null)//solo hijo derecha
                    {
                        if (enizquierda)
                        {
                            padre.Izquierda = encontrado.Derecha;
                        }
                        else
                        {
                            padre.Derecha = encontrado.Derecha;
                        }
                    }
                    else if (encontrado.Izquierda != null && encontrado.Derecha != null)//con 2 hijos
                    {
                        NodoABB sucesor  = this.Sucesor(encontrado);
                        string  aux_nick = sucesor.Nickname;
                        encontrado.Correo     = sucesor.Correo;
                        encontrado.Conectado  = sucesor.Conectado;
                        encontrado.Contraseña = sucesor.Contraseña;
                        encontrado.Juego      = sucesor.Juego;
                        this.Eliminar(sucesor.Nickname);
                        encontrado.Nickname = aux_nick;
                    }
                }
            }
        }