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 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(); }