public void PrimeraSeparacion(NodoStar Actual, Bebida Nuevo) { var lista = new List <Bebida>(); foreach (var item in Actual.Datos) { lista.Add(item); } lista.Add(Nuevo); // escribir en el archivo todos los nodos disponibles del padre e hijos var hijo1 = new NodoStar(Grado, true) { Grado = Grado }; hijo1.id = IdPAdre; var indice = 0; for (int i = 0; i < lista.Count / 2; i++) { hijo1.Datos[indice] = lista[i]; indice++; } indice = 0; var hijo2 = new NodoStar(Grado, true); hijo2.id = Siguiente; Siguiente++; for (int i = (lista.Count / 2) + 1; i < lista.Count; i++) { hijo2.Datos[indice] = lista[i]; indice++; } var raiznueva = new NodoStar(Grado, false) { id = Siguiente }; lista.Sort((x, y) => x.Nombre.CompareTo(y.Nombre)); raiznueva.Datos[0] = lista[(lista.Count / 2) + 1]; IdPAdre = Siguiente; raiznueva.Hijos[0] = hijo1.id; raiznueva.Hijos[1] = hijo2.id; hijo1.Padre = raiznueva.id; hijo2.Padre = raiznueva.id; Siguiente++; SortDatos(raiznueva.Datos); SortDatos(hijo1.Datos); SortDatos(hijo2.Datos); var escritor = new StreamWriter(GlobalPath); //metadata escritor.WriteLine($"{(IdPAdre).ToString().PadLeft(3, '0')}" + $"|{Grado.ToString().PadLeft(3, '0')}|{Siguiente.ToString().PadLeft(3, '0')}" + $"|{LargoPadre.ToString().PadLeft(3, '0')}|{LargoHijo.ToString().PadLeft(3, '0')}|"); // nodos escritor.WriteLine(hijo1.WriteNodo()); escritor.WriteLine(hijo2.WriteNodo()); escritor.WriteLine(raiznueva.WriteNodo()); escritor.Close(); }