Пример #1
0
        public virtual NodoDato <T> agregardato(T agregar, NodoDato <T> comparar)
        {
            //NodoDato<T> nuevonodo = new NodoDato<T>(agregar);


            if (comparar == null)
            {
                comparar = crearnuevonodo(agregar);
            }
            else
            {
                int a = comparar.Dato.CompareTo(agregar);
                if (a >= 0)
                {
                    comparar.Izquierda = agregardato(agregar, comparar.Izquierda);
                }
                else
                {
                    comparar.Derecha = agregardato(agregar, comparar.Derecha);
                }
            }


            return(comparar);
        }
Пример #2
0
        public int buscar(NodoDato <T> comparacion, T s, ref bool u)
        {
            int z = 0;

            if (comparacion == null)
            {
            }
            else
            {
                if (comparacion.Dato.CompareTo(s) == 0)
                {
                    u = true;
                }
                else
                {
                    if (comparacion.Dato.CompareTo(s) >= 1)
                    {
                        z = buscar(comparacion.Izquierda, s, ref u) + 1;
                    }
                    else
                    {
                        z = buscar(comparacion.Derecha, s, ref u) + 1;
                    }
                }
            }


            return(z);
        }
Пример #3
0
        public NodoDato <T> crearnuevonodo(T agregar)
        {
            NodoDato <T> nuevonodo = null;

            nuevonodo = new NodoDato <T>(agregar);
            return(nuevonodo);
        }
Пример #4
0
        public NodoDato <T> rotarizquierdaderecha(NodoDato <T> desbalanceado)
        {
            NodoDato <T> aux;

            desbalanceado.Izquierda = rotarizquierda(desbalanceado.Izquierda);
            aux = rotarderecha(desbalanceado);
            return(aux);
        }
Пример #5
0
        public NodoDato <T> rotarizquierda(NodoDato <T> desbalanceado)
        {
            NodoDato <T> aux;

            aux = desbalanceado.Derecha;
            desbalanceado.Derecha = aux.Izquierda;
            aux.Izquierda         = desbalanceado;
            return(aux);
        }
Пример #6
0
 public virtual NodoDato <T> eliminardato(T agregar, NodoDato <T> comparacion)
 {
     if (comparacion == null)
     {
         //throw new Exception("no existe numero en el arbol");
     }
     else
     {
         int a = comparacion.Dato.CompareTo(agregar);
         if (a == 0)
         {
             if (comparacion.Izquierda == null && comparacion.Derecha == null)
             {
                 comparacion = null;
             }
             else
             {
                 if (comparacion.Izquierda == null && comparacion.Derecha != null)
                 {
                     comparacion         = comparacion.Derecha;
                     comparacion.Derecha = null;
                 }
                 else
                 {
                     if (comparacion.Izquierda != null && comparacion.Derecha == null)
                     {
                         comparacion           = comparacion.Izquierda;
                         comparacion.Izquierda = null;
                     }
                     else
                     {
                         NodoDato <T> aux = comparacion.Izquierda;
                         while (aux.Derecha != null)
                         {
                             aux = aux.Derecha;
                         }
                         comparacion.Dato = aux.Dato;
                         eliminardato(aux.Dato, aux);
                     }
                 }
             }
         }
         else
         {
             if (a <= 1)
             {
                 comparacion.Izquierda = eliminardato(agregar, comparacion.Izquierda);
             }
             else
             {
                 comparacion.Derecha = eliminardato(agregar, comparacion.Derecha);
             }
         }
     }
     return(comparacion);
 }
Пример #7
0
        public string mostrar(NodoDato <T> analizar)
        {
            NodoDato <T> actualNodo = analizar;
            string       contenido;

            contenido = "";


            contenido = contenido + "\n" + actualNodo.Dato.ToString() + ",";



            return(contenido);
        }
Пример #8
0
        public string mostrarin(NodoDato <T> analizar)
        {
            if (analizar == null)
            {
            }
            else
            {
                mostrarin(analizar.Izquierda);
                ordenados = ordenados + mostrar(analizar);
                mostrarin(analizar.Derecha);
            }


            return(ordenados);
        }
Пример #9
0
        public NodoDato <T> llamarbalanceo(NodoDato <T> inicio)
        {
            if (inicio.Izquierda != null)
            {
                inicio.Izquierda = llamarbalanceo(inicio.Izquierda);
            }

            if (inicio.Derecha != null)
            {
                inicio.Derecha = llamarbalanceo(inicio.Derecha);
            }
            int a = necesitobalanceo(inicio);

            if (a >= -1 && a <= 1)
            {
            }
            else
            {
                if (a > 1)
                {
                    int b = necesitobalanceo(inicio.Izquierda);
                    if (b < 0)
                    {
                        inicio = rotarizquierdaderecha(inicio);
                    }
                    else
                    {
                        inicio = rotarderecha(inicio);
                    }
                }
                else
                {
                    int c = necesitobalanceo(inicio.Derecha);
                    if (c > 0)
                    {
                        inicio = rotarderechaizquierda(inicio);
                    }
                    else
                    {
                        inicio = rotarizquierda(inicio);
                    }
                }
            }

            return(inicio);
        }
Пример #10
0
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }

            NodoDato <T> otherNodoDato = obj as NodoDato <T>;

            if (otherNodoDato != null)
            {
                return(this.Dato.CompareTo(otherNodoDato.Dato));
            }
            else
            {
                throw new ArgumentException("Object is not a NodoDato");
            }
        }
Пример #11
0
        public int necesitobalanceo(NodoDato <T> padre)
        {
            raiz.calcularaltura();
            int a = 0;

            if (padre.Izquierda == null && padre.Derecha == null)
            {
                a = 0;
            }
            else if (padre.Izquierda == null && padre.Derecha != null)
            {
                a = 0 - padre.Derecha.altura;
            }
            else if (padre.Izquierda != null && padre.Derecha == null)
            {
                a = padre.Izquierda.altura;
            }
            else if (padre.Izquierda != null && padre.Derecha != null)
            {
                a = padre.Izquierda.altura - padre.Derecha.altura;
            }

            return(a);
        }
Пример #12
0
 public ArbolABB()
 {
     raiz = null;
 }
Пример #13
0
 public virtual void sacardato(T agregar)
 {
     raiz = eliminardato(agregar, raiz);
 }
Пример #14
0
 public virtual void meterdato(T agregar)
 {
     raiz = agregardato(agregar, raiz);
 }