private void EliminarIDNodo(NodoBArbol <TK, TP> NodoTemp, TK IdAEliminar, int IndiceIDenNodo) { if (NodoTemp.EsHoja) { NodoTemp.ListaValores.RemoveAt(IndiceIDenNodo); return; } NodoBArbol <TK, TP> HijoPredecesor = NodoTemp.ListaHijos[IndiceIDenNodo]; if (HijoPredecesor.ListaValores.Count >= this.Grado) { Indice <TK, TP> IndicePredecesor = this.BorrarPredecesor(HijoPredecesor); NodoTemp.ListaValores[IndiceIDenNodo] = IndicePredecesor; } else { NodoBArbol <TK, TP> HijoSucesor = NodoTemp.ListaHijos[IndiceIDenNodo + 1]; if (HijoSucesor.ListaValores.Count >= this.Grado) { Indice <TK, TP> Sucesor = this.BorrarSucesor(HijoPredecesor); NodoTemp.ListaValores[IndiceIDenNodo] = Sucesor; } else { HijoPredecesor.ListaValores.Add(NodoTemp.ListaValores[IndiceIDenNodo]); HijoPredecesor.ListaValores.AddRange(HijoSucesor.ListaValores); HijoPredecesor.ListaHijos.AddRange(HijoSucesor.ListaHijos); NodoTemp.ListaValores.RemoveAt(IndiceIDenNodo); NodoTemp.ListaHijos.RemoveAt(IndiceIDenNodo + 1); this.EliminarInterno(HijoPredecesor, IdAEliminar); } } }
public bool Equals(Indice <TK, TP> other) { return(this.ID.Equals(other.ID) && this.Apuntador.Equals(other.Apuntador)); }