Example #1
0
        public void Insertar(T valor)
        {
            Raiz = BReader <T> .LeerRaiz(RutaArbol);

            if (Raiz == int.MinValue)
            {
                NodoB <T> nodo = new NodoB <T>(TamaƱoT, Grado, PosicionDisponible);
                nodo.Valores[0] = valor;
                BWriter <T> .EscribirNodo(RutaArbol, nodo, PosicionDisponible);

                Raiz = nodo.posicion;
                BWriter <T> .EscribirRaiz(RutaArbol, Raiz);

                PosicionDisponible++;
                BWriter <T> .EscribirPosicionDisponible(RutaArbol, PosicionDisponible);
            }
            else
            {
                int posicionNodo = BuscarPosicion(valor, GuardarNodo(BReader <T> .LeerNodo(RutaArbol, Raiz)));
                if (posicionNodo != int.MaxValue)
                {
                    NodoB <T> Nodo = GuardarNodo(BReader <T> .LeerNodo(RutaArbol, posicionNodo));
                    InsertarValor(valor, ref Nodo);
                    BWriter <T> .EscribirNodo(RutaArbol, Nodo, Nodo.posicion);

                    if (Nodo.Valores[Grado - 1] != null)
                    {
                        SepararNodo(Nodo);
                    }
                }
            }
        }
Example #2
0
        public T ReturnValor(T valor)
        {
            Raiz = BReader <T> .LeerRaiz(RutaArbol);

            if (Raiz != int.MinValue)
            {
                T   objeto       = default(T);
                int posicionNodo = BuscarPosicionValor(GuardarNodo(BReader <T> .LeerNodo(RutaArbol, Raiz)), valor);

                if (posicionNodo != int.MaxValue)
                {
                    NodoB <T> nodo = GuardarNodo(BReader <T> .LeerNodo(RutaArbol, posicionNodo));

                    for (int i = 0; i < nodo.Valores.Length - 1; i++)
                    {
                        if ((int)comparador1.DynamicInvoke(valor, nodo.Valores[i]) == 0 && (int)comparador2.DynamicInvoke(valor, nodo.Valores[i]) == 0)
                        {
                            objeto = nodo.Valores[i];
                            break;
                        }
                    }
                }

                return(objeto);
            }
            else
            {
                return(default(T));
            }
        }
Example #3
0
        public List <T> ToList()
        {
            List <T> lista = new List <T>();

            ToList(ref lista, BReader <T> .LeerRaiz(RutaArbol));

            return(lista);
        }