Exemplo n.º 1
0
        public Nodo insertar(ModeloSoda dato, Nodo nodo)
        {
            if (nodo.hijoIzquierdo == null && nodo.hijoMedio == null && nodo.hijoDerecho == null)
            {
                if (nodo.valorDerecho == null)
                {
                    if (nodo.valorIzquierdo.nombre.CompareTo(dato.nombre) == 1)
                    {
                        nodo.valorDerecho   = nodo.valorIzquierdo;
                        nodo.valorIzquierdo = dato;
                    }
                    else
                    {
                        nodo.valorDerecho = dato;
                    }
                    return(null);
                }
                else
                {
                    if (nodo.valorDerecho.nombre.CompareTo(dato.nombre) == -1)
                    {
                        var nuevoParaSubir = new Nodo();
                        var partirActual   = new Nodo();
                        nuevoParaSubir.valorIzquierdo = nodo.valorDerecho;
                        partirActual.valorIzquierdo   = dato;
                        nodo.valorDerecho             = null;
                        nuevoParaSubir.hijoIzquierdo  = nodo;
                        nuevoParaSubir.hijoMedio      = partirActual;


                        return(nuevoParaSubir);
                    }

                    else if (nodo.valorIzquierdo.nombre.CompareTo(dato.nombre) == 1)
                    {
                        var nuevoParaSubir = new Nodo();
                        var partirActual   = new Nodo();
                        partirActual.valorIzquierdo   = nodo.valorDerecho;
                        nodo.valorDerecho             = null;
                        nuevoParaSubir.valorIzquierdo = nodo.valorIzquierdo;
                        nodo.valorIzquierdo           = dato;
                        nuevoParaSubir.hijoIzquierdo  = nodo;
                        nuevoParaSubir.hijoMedio      = partirActual;


                        return(nuevoParaSubir);
                    }
                    else
                    {
                        var nuevoParaSubir = new Nodo();
                        nuevoParaSubir.valorIzquierdo = dato;
                        var partirActual = new Nodo();
                        partirActual.valorIzquierdo  = nodo.valorDerecho;
                        nodo.valorDerecho            = null;
                        nuevoParaSubir.hijoIzquierdo = nodo;
                        nuevoParaSubir.hijoMedio     = partirActual;
                        return(nuevoParaSubir);
                    }
                }
            }
            else
            {
                if (nodo.valorDerecho == null)
                {
                    if (nodo.valorIzquierdo.nombre.CompareTo(dato.nombre) == -1)
                    {
                        var temp = insertar(dato, nodo.hijoMedio);
                        if (temp != null)
                        {
                            nodo.valorDerecho = temp.valorIzquierdo;
                            nodo.hijoMedio    = temp.hijoIzquierdo;
                            nodo.hijoDerecho  = temp.hijoMedio;
                        }
                        return(null);
                    }
                    else
                    {
                        var temp = insertar(dato, nodo.hijoIzquierdo);
                        if (temp != null)
                        {
                            nodo.valorDerecho   = nodo.valorIzquierdo;
                            nodo.valorIzquierdo = temp.valorIzquierdo;
                            nodo.hijoIzquierdo  = temp.hijoIzquierdo;
                            nodo.hijoDerecho    = nodo.hijoMedio;
                            nodo.hijoMedio      = temp.hijoMedio;
                        }
                        return(null);
                    }
                }
                else
                {
                    if (dato.nombre.CompareTo(nodo.valorIzquierdo.nombre) == -1)
                    {
                        var temporal = insertar(dato, nodo.hijoIzquierdo);
                        if (temporal != null)
                        {
                            var nodoParaSubir = new Nodo();
                            nodoParaSubir.valorIzquierdo = nodo.valorIzquierdo;
                            nodoParaSubir.hijoIzquierdo  = temporal;
                            nodo.valorIzquierdo          = nodo.valorDerecho;
                            nodo.valorDerecho            = null;
                            nodo.hijoIzquierdo           = nodo.hijoMedio;
                            nodo.hijoMedio          = nodo.hijoDerecho;
                            nodo.hijoDerecho        = null;
                            nodoParaSubir.hijoMedio = nodo;
                            return(nodoParaSubir);
                        }
                        else
                        {
                            return(null);
                        }
                    }
                    else if ((dato.nombre.CompareTo(nodo.valorDerecho.nombre) == -1))
                    {
                        var temporal = insertar(dato, nodo.hijoMedio);
                        if (temporal != null)
                        {
                            var nodoParaSubir = new Nodo();
                            nodoParaSubir.valorIzquierdo = temporal.valorIzquierdo;
                            var partirActual = new Nodo();
                            partirActual.valorIzquierdo = nodo.valorDerecho;
                            partirActual.hijoMedio      = nodo.hijoDerecho;
                            partirActual.hijoIzquierdo  = temporal.hijoMedio;
                            nodo.valorDerecho           = null;
                            nodo.hijoDerecho            = null;
                            nodoParaSubir.hijoIzquierdo = nodo;
                            nodo.hijoMedio             = temporal.hijoIzquierdo;
                            nodoParaSubir.hijoMedio    = partirActual;
                            partirActual.hijoIzquierdo = temporal.hijoMedio;
                            return(nodoParaSubir);
                        }
                        else
                        {
                            return(null);
                        }
                    }
                    else
                    {
                        var temporal = insertar(dato, nodo.hijoDerecho);
                        if (temporal != null)
                        {
                            var nodoParaSubir = new Nodo();
                            nodoParaSubir.valorIzquierdo = nodo.valorDerecho;
                            nodo.hijoDerecho             = null;
                            nodo.valorDerecho            = null;
                            nodoParaSubir.hijoIzquierdo  = nodo;
                            nodoParaSubir.hijoMedio      = temporal;
                            return(nodoParaSubir);
                        }
                        else
                        {
                            return(null);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
 public ModeloSoda BuscarCompa(string nombre, Nodo nodo)
 {
     if (nodo.hijoIzquierdo == null && nodo.hijoMedio == null && nodo.hijoDerecho == null)
     {
         if (nodo.valorDerecho == null)
         {
             if (nodo.valorIzquierdo.nombre == nombre)
             {
                 return(nodo.valorIzquierdo);
             }
             else
             {
                 return(null);
             }
         }
         else
         {
             if (nodo.valorDerecho.nombre == nombre)
             {
                 return(nodo.valorDerecho);
             }
             else if (nodo.valorIzquierdo.nombre == nombre)
             {
                 return(nodo.valorIzquierdo);
             }
             else
             {
                 return(null);
             }
         }
     }
     else if (nodo.valorDerecho == null)
     {
         if (nodo.valorIzquierdo.nombre == nombre)
         {
             return(nodo.valorIzquierdo);
         }
         else
         {
             if (nombre.CompareTo(nodo.valorIzquierdo.nombre) == 1)
             {
                 return(BuscarCompa(nombre, nodo.hijoMedio));
             }
             else
             {
                 return(BuscarCompa(nombre, nodo.hijoIzquierdo));
             }
         }
     }
     else
     {
         if (nombre == nodo.valorIzquierdo.nombre)
         {
             return(nodo.valorIzquierdo);
         }
         else if (nombre == nodo.valorDerecho.nombre)
         {
             return(nodo.valorDerecho);
         }
         else if (nombre.CompareTo(nodo.valorIzquierdo.nombre) == -1)
         {
             return(BuscarCompa(nombre, nodo.hijoIzquierdo));
         }
         else if (nodo.valorIzquierdo.nombre.CompareTo(nombre) == -1 && nombre.CompareTo(nodo.valorDerecho.nombre) == -1)
         {
             return(BuscarCompa(nombre, nodo.hijoMedio));
         }
         else
         {
             return(BuscarCompa(nombre, nodo.hijoDerecho));
         }
     }
 }