public void Insert(TKey newKey, TData newData)
 {
     cerrarArchivo();
     archivoArbol = File.Open(rutaArchivo, FileMode.Open);
     if (Raiz == null)
     {
         nodoB <TKey, TData> newnodoB = NewnodoB();
         newnodoB.insertar(newKey, newData);
         Raiz = newnodoB;
         archivoArbol.Seek(saltarEncabezado(), SeekOrigin.Begin);
         archivoArbol.Write(ConvertStringTo_ByteChain(mostrar(Raiz)), 0, mostrar(Raiz).Length);
         Cuenta++;
         Altura++;
     }
     else
     {
         insertarRecursivamente(newKey, newData, Raiz);
     }
     archivoArbol.Seek(0, SeekOrigin.Begin);
     if (Raiz == null)
     {
         Encabezado = Generador.armarEncabezado(Generador.hacerNulo().ToString(), Generador.tamanioPosicionesFijas(ultimaPosicion), Orden, Altura);
     }
     else
     {
         Encabezado = Generador.armarEncabezado(Generador.tamanioPosicionesFijas(Raiz.posicionPrincipal), Generador.tamanioPosicionesFijas(ultimaPosicion), Orden, Altura);
     }
     archivoArbol.Write(ConvertStringTo_ByteChain(Encabezado), 0, Encabezado.Length);
     cerrarArchivo();
 }
        public string mostrar(nodoB <TKey, TData> Current)
        {
            string chain = "";

            chain += Generador.tamanioPosicionesFijas(Current.posicionPrincipal) + "|" + listaCadenas(Current.nodoLlaves) + listaCadenas(Current.datosNodo) + Generador.tamanioPosicionesFijas(Current.Padre) + "|" + stringOfList(Current.Hijos) + Environment.NewLine;
            return(chain);
        }
        public static string armarEncabezado(string direccionRaiz, string ultimaDireccion, int ordenArbol, int altura)
        {
            string encabezado = "";

            encabezado += direccionRaiz + Environment.NewLine;
            encabezado += ultimaDireccion + Environment.NewLine;
            encabezado += Generador.tamanioPosicionesFijas(Math.Abs(ordenArbol - 1)) + Environment.NewLine;
            encabezado += tamanioPosicionesFijas(ordenArbol) + Environment.NewLine;
            encabezado += tamanioPosicionesFijas(altura) + Environment.NewLine;

            return(encabezado);
        }
        private string stringOfList(List <int> s)
        {
            string chain = "";

            for (int i = 0; i < Orden; i++)
            {
                if (i < s.Count)
                {
                    chain += Generador.tamanioPosicionesFijas(s[i]) + "|";
                }
                else
                {
                    chain += Generador.hacerNulo() + "|";
                }
            }
            return(chain);
        }
 public arbolBAsterisco(int TreeOrder, string archivoArbolName, string archivoArbolPath, ConvertStringToKey KeyConverter, ConvertStringToData StringConverter, GetData DataConverter, int KeyMaxLength, GetDataLength DataMaxLength)
 {
     Raiz                = null;
     Orden               = TreeOrder;
     Cuenta              = 0;
     Altura              = 0;
     ultimaPosicion      = 0;
     rutaArchivo         = archivoArbolPath + archivoArbolName;
     archivoArbol        = File.Create(rutaArchivo);//Se creará en la carpeta del proyecto
     espaciosDisponibles = new List <int>();
     Encabezado          = Generador.armarEncabezado(Generador.hacerNulo().ToString(), Generador.tamanioPosicionesFijas(0), Orden, 0) + Environment.NewLine;
     archivoArbol.Write(ConvertStringTo_ByteChain(Encabezado), 0, Encabezado.Length);
     ConverterStringToTkey  = KeyConverter;
     ConverterStringToTData = StringConverter;
     retornarDatos          = DataConverter;
     tamanioMaximoLlave     = KeyMaxLength;
     retornarTamanioDatos   = DataMaxLength;
     cerrarArchivo();
 }