public void Insertar(T valor) { Raiz = BReader <T> .LeerRaiz(RutaArbol); if (Raiz == int.MinValue) { NodoB <T> nodo = new NodoB <T>(TamañoT, Grado, PosicionDisponible); nodo.Valores[0] = valor; BWriter <T> .EscribirNodo(RutaArbol, nodo, PosicionDisponible); Raiz = nodo.posicion; BWriter <T> .EscribirRaiz(RutaArbol, Raiz); PosicionDisponible++; BWriter <T> .EscribirPosicionDisponible(RutaArbol, PosicionDisponible); } else { int posicionNodo = BuscarPosicion(valor, GuardarNodo(BReader <T> .LeerNodo(RutaArbol, Raiz))); if (posicionNodo != int.MaxValue) { NodoB <T> Nodo = GuardarNodo(BReader <T> .LeerNodo(RutaArbol, posicionNodo)); InsertarValor(valor, ref Nodo); BWriter <T> .EscribirNodo(RutaArbol, Nodo, Nodo.posicion); if (Nodo.Valores[Grado - 1] != null) { SepararNodo(Nodo); } } } }
public T ReturnValor(T valor) { Raiz = BReader <T> .LeerRaiz(RutaArbol); if (Raiz != int.MinValue) { T objeto = default(T); int posicionNodo = BuscarPosicionValor(GuardarNodo(BReader <T> .LeerNodo(RutaArbol, Raiz)), valor); if (posicionNodo != int.MaxValue) { NodoB <T> nodo = GuardarNodo(BReader <T> .LeerNodo(RutaArbol, posicionNodo)); for (int i = 0; i < nodo.Valores.Length - 1; i++) { if ((int)comparador1.DynamicInvoke(valor, nodo.Valores[i]) == 0 && (int)comparador2.DynamicInvoke(valor, nodo.Valores[i]) == 0) { objeto = nodo.Valores[i]; break; } } } return(objeto); } else { return(default(T)); } }
public List <T> ToList() { List <T> lista = new List <T>(); ToList(ref lista, BReader <T> .LeerRaiz(RutaArbol)); return(lista); }