示例#1
0
 public Nodo BusquedaMenor(Nodo nodo, Nodo nodo_menor)
 {
     if (nodo != null)
     {
         if (Comparador.mayor_que(nodo.getUsuario(), nodo_menor.getUsuario()))
         {
             nodo_menor = nodo;
         }
         else
         {
             nodo_menor = BusquedaMenor(nodo.getIzquierda(), nodo_menor);
         }
     }
     return(nodo_menor);
 }
示例#2
0
 public Usuario ObtieneUsuario(Nodo nodo, Usuario usuario)
 {
     if (nodo != null)
     {
         if (nodo.getUsuario().nickname == usuario.nickname)
         {
             return(nodo.getUsuario());
         }
         else if (Comparador.mayor_que(usuario, nodo.getUsuario()))
         {
             return(ObtieneUsuario(nodo.getDerecha(), usuario));
         }
         else if (Comparador.menor_que(usuario, nodo.getUsuario()))
         {
             return(ObtieneUsuario(nodo.getIzquierda(), usuario));
         }
         return(null);
     }
     return(null);
 }
示例#3
0
 public Nodo RemplazoMenor(Nodo nodo, Nodo nodo_menor)
 {
     if (Comparador.iguales(nodo.getUsuario(), nodo_menor.getUsuario()))
     {
         nodo = nodo.getDerecha();
     }
     else if (nodo.getIzquierda() != null && nodo.getDerecha() == null)
     {
         Nodo izquierda;
         izquierda = RemplazoMenor(nodo.getIzquierda(), nodo_menor);
         nodo.setIzquierda(izquierda);
     }
     else if (nodo.getDerecha() != null && nodo.getIzquierda() == null)
     {
         Nodo derecha;
         derecha = RemplazoMenor(nodo.getDerecha(), nodo_menor);
         nodo.setDerecha(derecha);
     }
     return(nodo);
 }
示例#4
0
 public Nodo ModificaUsuario(Nodo nodo, Usuario usuario)
 {
     if (nodo != null)
     {
         if (nodo.getUsuario().nickname == usuario.nickname)
         {
             nodo.setUsuario(usuario);
             return(nodo);
         }
         else if (Comparador.mayor_que(usuario, nodo.getUsuario()))
         {
             nodo.setDerecha(ModificaUsuario(nodo.getDerecha(), usuario));
         }
         else if (Comparador.menor_que(usuario, nodo.getUsuario()))
         {
             nodo.setIzquierda(ModificaUsuario(nodo.getIzquierda(), usuario));
         }
         return(nodo);
     }
     return(nodo);
 }
示例#5
0
 public Usuario Sesion(Nodo nodo, Usuario usuario)
 {
     if (nodo != null)
     {
         if (nodo.getUsuario().nickname == usuario.nickname)
         {
             if (nodo.getUsuario().clave == Usuario.GenerarSha1(usuario.clave))
             {
                 return(nodo.getUsuario());
             }
             return(null);
         }
         else if (Comparador.mayor_que(usuario, nodo.getUsuario()))
         {
             return(Sesion(nodo.getDerecha(), usuario));
         }
         else if (Comparador.menor_que(usuario, nodo.getUsuario()))
         {
             return(Sesion(nodo.getIzquierda(), usuario));
         }
         return(null);
     }
     return(null);
 }
示例#6
0
 public Nodo BusquedaEliminarNodo(Nodo nodo, Usuario usuario)
 {
     if (nodo == null)
     {
         //NO EXISTE
     }
     else if (Comparador.iguales(usuario, nodo.getUsuario()))
     {
         nodo = RemplazoNodo(nodo);
     }
     else if (Comparador.mayor_que(usuario, nodo.getUsuario()))
     {
         Nodo derecha;
         derecha = BusquedaEliminarNodo(nodo.getDerecha(), usuario);
         nodo.setDerecha(derecha);
     }
     else if (Comparador.menor_que(usuario, nodo.getUsuario()))
     {
         Nodo izquierda;
         izquierda = BusquedaEliminarNodo(nodo.getIzquierda(), usuario);
         nodo.setIzquierda(izquierda);
     }
     return(nodo);
 }
示例#7
0
        public Nodo InsertarValor(Nodo nodo, Usuario usuario, Logical h)
        {
            Nodo n1;

            if (nodo == null || nodo.getUsuario() == null)
            {
                nodo = new Nodo();
                nodo.setUsuario(usuario);
                h.setLogical(true);
            }
            else if (Comparador.menor_que(usuario, nodo.getUsuario()))
            {
                Nodo izquierda;
                izquierda = InsertarValor(nodo.getIzquierda(), usuario, h);
                nodo.setIzquierda(izquierda);
                if (h.booleanValue())
                {
                    // decrementa el fe por aumentar la altura de rama izquierda
                    switch (nodo.fe)
                    {
                    case 1:
                        nodo.fe = 0;
                        h.setLogical(false);
                        break;

                    case 0:
                        nodo.fe = -1;
                        break;

                    case -1:     // aplicar rotación a la izquierda
                        n1 = (Nodo)nodo.getIzquierda();
                        if (n1.fe == -1)
                        {
                            nodo = rotacionII(nodo, n1);
                            this.inserta_texto("Factor de equilibrio = -2; Nodos en Rotacion =" + nodo.getUsuario().nickname + "," + n1.getUsuario().nickname + " Rotacion II");
                        }
                        else
                        {
                            nodo = rotacionID(nodo, n1);
                            this.inserta_texto("Factor de equilibrio = -2; Nodos en Rotacion =" + nodo.getUsuario().nickname + "," + n1.getUsuario().nickname + " Rotacion ID");
                        }

                        h.setLogical(false);
                        break;
                    }
                }
            }
            else if (Comparador.mayor_que(usuario, nodo.getUsuario()))
            {
                Nodo derecha;
                derecha = InsertarValor(nodo.getDerecha(), usuario, h);
                nodo.setDerecha(derecha);
                if (h.booleanValue())
                {
                    // incrementa el fe por aumentar la altura de rama izquierda
                    switch (nodo.fe)
                    {
                    case 1:     // aplicar rotación a la derecha
                        n1 = (Nodo)nodo.getDerecha();
                        if (n1.fe == +1)
                        {
                            nodo = rotacionDD(nodo, n1);
                            this.inserta_texto("Factor de equilibrio = 2; Nodos en Rotacion =" + nodo.getUsuario().nickname + "," + n1.getUsuario().nickname + " Rotacion DD");
                        }
                        else
                        {
                            nodo = rotacionDI(nodo, n1);
                            this.inserta_texto("Factor de equilibrio = 2; Nodos en Rotacion =" + nodo.getUsuario().nickname + "," + n1.getUsuario().nickname + " Rotacion DI");
                        }
                        h.setLogical(false);
                        break;

                    case 0:
                        nodo.fe = +1;
                        break;

                    case -1:
                        nodo.fe = 0;
                        h.setLogical(false);
                        break;
                    }
                }
            }
            else
            {
                //IGUALES
            }
            return(nodo);
        }