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