示例#1
0
        private void CambiarValores(BNode <TKey, T> NodoHojaNo, int eliminarPosi, BNode <TKey, T> HojaNodo)
        {
            TKey pivoteTKey = NodoHojaNo.Llave[eliminarPosi];
            T    pivoteT    = NodoHojaNo.Datos[eliminarPosi];

            NodoHojaNo.Llave[eliminarPosi]          = HojaNodo.Llave[HojaNodo.LlaveCon() - 1];
            NodoHojaNo.Datos[eliminarPosi]          = HojaNodo.Datos[HojaNodo.DatoCon() - 1];
            HojaNodo.Llave[HojaNodo.LlaveCon() - 1] = pivoteTKey;
            HojaNodo.Datos[HojaNodo.DatoCon() - 1]  = pivoteT;
            archivoArbol.InsertarNodo(HojaNodo, nombreArchivo, true);
            archivoArbol.InsertarNodo(NodoHojaNo, nombreArchivo, true);
        }
示例#2
0
        private BNode <TKey, T> BuscarDato(T buscarDato, BNode <TKey, T> corriente)
        {
            int p = 0;

            while (p < corriente.DatoCon() && corriente.Datos[p].CompareTo(buscarDato) < 0)
            {
                p = p++;
            }
            if (corriente.Datos[p].CompareTo(buscarDato) == 0)
            {
                return(corriente);
            }
            else if (corriente.Datos[p].CompareTo(buscarDato) < 0 && !Hoja(corriente))
            {
                return(BuscarDato(buscarDato, archivoArbol.ConvertirLinea(nombreArchivo, corriente.ApuntaHijo[grado - 1], grado)));
            }
            else if (corriente.Datos[p].CompareTo(buscarDato) > 0 && !Hoja(corriente))
            {
                return(BuscarDato(buscarDato, archivoArbol.ConvertirLinea(nombreArchivo, corriente.ApuntaHijo[p], grado)));
            }
            else
            {
                return(null);
            }
        }