private void insertarRecursivamente(TKey newKey, TData newData, nodoB <TKey, TData> Current) { if (Current.esHoja()) { if (!Current.estaLleno()) /*Insertará si y solo si es hoja y está vacío*/ { Current.insertar(newKey, newData); actaulizarNodo(Current); } else { //Esto indica que donde se iba a inseratr está lleno nodoB <TKey, TData> aux = AccessTonodoB(Current.Padre); InsertPop(Current, newData, newKey, posicionPrincipal(aux, newKey)); } } else { //Se moviliza hacia otro nodo if (newKey.CompareTo(Current.nodoLlaves[0]) == -1) { insertarRecursivamente(newKey, newData, AccessTonodoB(Current.Hijos[0])); } else if (newKey.CompareTo(Current.nodoLlaves[0]) == 1) { int index = obtenerIndiceParaInsertar(Current, newKey); insertarRecursivamente(newKey, newData, AccessTonodoB(Current.Hijos[index])); } else { Cuenta--; } } }
private List <string> InOrderRecursivo(nodoB <TKey, TData> currentnodoB, List <string> data) { if (currentnodoB == null) { return(data); } if (currentnodoB.esHoja()) { for (int i = 0; i < currentnodoB.datosNodo.Count; i++) { IList <string> values = retornarDatos(currentnodoB.datosNodo[i]); string line = ""; for (int j = 0; j < values.Count; j++) { line += values[j] + "|"; } data.Add(line.Remove(line.Length - 1) + "\n"); } return(data); } else { for (int i = 0; i < currentnodoB.Hijos.Count; i++) { data.Concat(InOrderRecursivo(AccessTonodoB(currentnodoB.Hijos[i]), data)); if (i < currentnodoB.datosNodo.Count) { IList <string> values = retornarDatos(currentnodoB.datosNodo[i]); string line = ""; for (int j = 0; j < values.Count; j++) { line += values[j] + "|"; } data.Add(line.Remove(line.Length - 1) + "\n"); } } return(data); } }