private void EliminarLlaveNodo(NodoAsteriscoo <TKey, T> nodo, TKey LlaveEliminar, int indiceLlaveNodo) { if (nodo.EsHoja) { nodo.Entradas.RemoveAt(indiceLlaveNodo); return; } NodoAsteriscoo <TKey, T> predecesorHijo = nodo.Hijos[indiceLlaveNodo]; if (predecesorHijo.Entradas.Count >= this.Grado) { BEntry <TKey, T> predecessor = this.EliminarPredecesor(predecesorHijo); nodo.Entradas[indiceLlaveNodo] = predecessor; } else { NodoAsteriscoo <TKey, T> succesorHijo = nodo.Hijos[indiceLlaveNodo + 1]; if (succesorHijo.Entradas.Count >= this.Grado) { BEntry <TKey, T> successor = this.EliminarSucesor(predecesorHijo); nodo.Entradas[indiceLlaveNodo] = successor; } else { predecesorHijo.Entradas.Add(nodo.Entradas[indiceLlaveNodo]); predecesorHijo.Entradas.AddRange(succesorHijo.Entradas); predecesorHijo.Hijos.AddRange(succesorHijo.Hijos); nodo.Entradas.RemoveAt(indiceLlaveNodo); nodo.Hijos.RemoveAt(indiceLlaveNodo + 1); this.EliminarInterno(predecesorHijo, LlaveEliminar); } } }
public bool Equals(BEntry <TKey, T> other) { return(this.LLave.Equals(other.LLave) && this.Apuntador.Equals(other.Apuntador)); }