Esempio n. 1
0
    private nodoAVL Rotacion_ID(nodoAVL actual) // Rotacion Izquierda Derecha
    {
        nodoAVL pivote = actual.izquierda;

        actual.izquierda = Rotacion_DD(pivote);
        return(Rotacion_II(actual));
    }
Esempio n. 2
0
    private nodoAVL Rotacion_DI(nodoAVL actual) // Rotacion Derecha Izquierda
    {
        nodoAVL pivote = actual.derecha;

        actual.derecha = Rotacion_II(pivote);
        return(Rotacion_DD(actual));
    }
Esempio n. 3
0
 private nodoAVL buscarR(string nick, nodoAVL actual)
 {
     if (actual != null)
     {
         if (nick.CompareTo(actual.nickname) < 0)
         {
             if (nick == actual.nickname)
             {
                 return(actual);
             }
             else
             {
                 return(buscarR(nick, actual.izquierda));
             }
         }
         else
         {
             if (nick == actual.nickname)
             {
                 return(actual);
             }
             else
             {
                 return(buscarR(nick, actual.derecha));
             }
         }
     }
     return(null);
 }
Esempio n. 4
0
    private nodoAVL balanceo(nodoAVL actual)
    {
        int valorB = dirBalanceo(actual);

        if (valorB > 1)
        {
            if (dirBalanceo(actual.izquierda) > 0)
            {
                actual = Rotacion_II(actual);
            }
            else
            {
                actual = Rotacion_ID(actual);
            }
        }
        else if (valorB < -1)
        {
            if (dirBalanceo(actual.derecha) > 0)
            {
                actual = Rotacion_DI(actual);
            }
            else
            {
                actual = Rotacion_DD(actual);
            }
        }
        return(actual);
    }
Esempio n. 5
0
    private int dirBalanceo(nodoAVL actual) // Indicara el tipo de balanceo
    {
        int l      = altura(actual.izquierda);
        int r      = altura(actual.derecha);
        int factor = l - r;

        return(factor);
    }
Esempio n. 6
0
    private nodoAVL Rotacion_II(nodoAVL actual) // Rotacion Izquierda Izquierda
    {
        nodoAVL pivote = actual.izquierda;

        actual.izquierda = pivote.derecha;
        pivote.derecha   = actual;
        return(pivote);
    }
Esempio n. 7
0
    // ------------------------------------------------------------------------------------------------------------------------- ROTACIONES
    private nodoAVL Rotacion_DD(nodoAVL actual) // Rotacion Derecha Derecha
    {
        nodoAVL pivote = actual.derecha;

        actual.derecha   = pivote.izquierda;
        pivote.izquierda = actual;
        return(pivote);
    }
Esempio n. 8
0
 private string mostrarsubR(nodoAVL actual)
 {
     if (actual != null)
     {
         sub += "\"Nickname: " + actual.nickname.ToString() + "\nContraseña: " + actual.password.ToString() + "\nCorreo: " + actual.correo.ToString() + "\"[style=filled; color= white;];\n";
         mostrarsubR(actual.izquierda);
         mostrarsubR(actual.derecha);
     }
     return(sub);
 }
Esempio n. 9
0
    public void modificar(AVL root, string contactoAModificar, string pass, string correo)
    {
        nodoAVL mod = buscarR(contactoAModificar, root.raiz);

        if (mod != null)
        {
            mod.password = pass;
            mod.correo   = correo;
        }
    }
Esempio n. 10
0
    public void InsertarAVL(AVL root, string nick, string pass, string correo)
    {
        nodoAVL nuevo = new nodoAVL(nick, pass, correo);

        if (root.raiz == null)
        {
            root.raiz = nuevo;
        }
        else
        {
            root.raiz = InsertarAVLR(root.raiz, nuevo);
        }
    }
Esempio n. 11
0
    private int altura(nodoAVL actual)
    {
        int height = 0;

        if (actual != null)
        {
            int l = altura(actual.izquierda);
            int r = altura(actual.derecha);
            int m = max(l, r);
            height = m + 1;
        }
        return(height);
    }
Esempio n. 12
0
 private string mostrarDotR(nodoAVL actual)
 {
     if (actual != null)
     {
         cuerpo += "\"Nickname: " + actual.nickname.ToString() + "\nContraseña: " + actual.password.ToString() + "\nCorreo: " + actual.correo.ToString() + "\";\n";
         if (actual.izquierda != null)
         {
             cuerpo += "\"Nickname: " + actual.nickname.ToString() + "\nContraseña: " + actual.password.ToString() + "\nCorreo: " + actual.correo.ToString() + "\"->\"Nickname: " + actual.izquierda.nickname.ToString() + "\nContraseña: " + actual.izquierda.password.ToString() + "\nCorreo: " + actual.izquierda.correo.ToString() + "\";\n";
         }
         if (actual.derecha != null)
         {
             cuerpo += "\"Nickname: " + actual.nickname.ToString() + "\nContraseña: " + actual.password.ToString() + "\nCorreo: " + actual.correo.ToString() + "\"->\"Nickname: " + actual.derecha.nickname.ToString() + "\nContraseña: " + actual.derecha.password.ToString() + "\nCorreo: " + actual.derecha.correo.ToString() + "\";\n";
         }
         mostrarDotR(actual.izquierda);
         mostrarDotR(actual.derecha);
     }
     return(cuerpo);
 }
Esempio n. 13
0
 private nodoAVL InsertarAVLR(nodoAVL actual, nodoAVL nuevo)
 {
     if (actual == null)
     {
         actual = nuevo;
         return(actual);
     }
     else if (nuevo.nickname.CompareTo(actual.nickname) < 0)
     {
         actual.izquierda = InsertarAVLR(actual.izquierda, nuevo);
         actual           = balanceo(actual);
     }
     else if (nuevo.nickname.CompareTo(actual.nickname) > 0)
     {
         actual.derecha = InsertarAVLR(actual.derecha, nuevo);
         actual         = balanceo(actual);
     }
     return(actual);
 }
Esempio n. 14
0
    private nodoAVL Eliminar(nodoAVL actual, string nick)
    {
        nodoAVL aux;

        if (actual == null)
        {
            return(null);
        }
        else
        {
            if (nick.CompareTo(actual.nickname) < 0)// arbol del lado izquierdo
            {
                actual.izquierda = Eliminar(actual.izquierda, nick);
                if (dirBalanceo(actual) == -2)
                {
                    if (dirBalanceo(actual.derecha) <= 0)
                    {
                        actual = Rotacion_DD(actual);
                    }
                    else
                    {
                        actual = Rotacion_DI(actual);
                    }
                }
            }
            else if (nick.CompareTo(actual.nickname) > 0)// arbol del lado derecho
            {
                actual.derecha = Eliminar(actual.derecha, nick);
                if (dirBalanceo(actual) == 2)
                {
                    if (dirBalanceo(actual.izquierda) >= 0)
                    {
                        actual = Rotacion_II(actual);
                    }
                    else
                    {
                        actual = Rotacion_ID(actual);
                    }
                }
            }
            // luego de ser encontrado
            else
            {
                if (actual.derecha != null)
                {
                    aux = actual.derecha;
                    while (aux.izquierda != null)
                    {
                        aux = aux.izquierda;
                    }
                    actual.nickname = aux.nickname;
                    actual.derecha  = Eliminar(actual.derecha, aux.nickname);
                    if (dirBalanceo(actual) == 2)// Aca se rebalancea de nuevo
                    {
                        if (dirBalanceo(actual.izquierda) >= 0)
                        {
                            actual = Rotacion_II(actual);
                        }
                        else
                        {
                            actual = Rotacion_ID(actual);
                        }
                    }
                }
                else
                {
                    return(actual.izquierda);
                }
            }
        }
        return(actual);
    }