Beispiel #1
0
        public void insertar(T valor, K llave)
        {
            elemento <T, K> elemento_insertar = new elemento <T, K>(valor, llave, comparador_);

            if (raiz.hijos.Count == 0)
            {
                raiz.elementos.Add(llave, elemento_insertar);
                raiz.llave = raiz.elementos.ElementAt(0).Key;

                if (raiz.elementos.Count == grado)
                {
                    separar(raiz);
                }
            }
            else
            {
                insertar_hojas(valor, llave, raiz);
            }
        }
Beispiel #2
0
        public void insertar_hojas(T valor, K llave, Nodo <T, K> nod)
        {
            if (nod.hijos.Count == 0)
            {
                elemento <T, K> elemento_aniadir = new elemento <T, K>(valor, llave, comparador_);
                nod.elementos.Add(llave, elemento_aniadir);
                Nodo <T, K> temp = nod;


                nod.padre.hijos.Remove(nod.llave);
                nod.padre.hijos.Add(nod.elementos.ElementAt(0).Key, temp);
                nod.llave = nod.elementos.ElementAt(0).Key;

                if (nod.elementos.Count == grado)
                {
                    separar(nod);
                }
            }
            else
            {
                if (nod.elementos.ElementAt(0).Value.CompareTo(llave) < 0)
                {
                    insertar_hojas(valor, llave, nod.hijos.ElementAt(0).Value);
                    return;
                }
                for (int j = 0; j <= nod.elementos.Count - 2; j++)
                {
                    if ((nod.elementos.ElementAt(j).Value.CompareTo(llave)) > 0 && (nod.elementos.ElementAt(j + 1).Value.CompareTo(llave) < 0))
                    {
                        insertar_hojas(valor, llave, (nod.hijos.ElementAt(j + 1).Value));
                        return;
                    }
                }
                if (nod.elementos.ElementAt(nod.elementos.Count - 1).Value.CompareTo(llave) > 0)
                {
                    insertar_hojas(valor, llave, nod.hijos.ElementAt(nod.hijos.Count - 1).Value);
                    return;
                }
            }
        }