Yo hace unos días he implementado un árbol binario en Vbasic que me parece bastante potente.
Doy por entendido que sabes manejar bien la programación porque de lo contrario es probable que te hagas un pequeño lio pero prueba lo siguiente:
'Estructura Para las claves
Type reg
loReg as long
HiReg as long
Key as string
end type
'Estructura para los nodos
Type Nodos
IdKey as string
items as long
regs() as reg
end type
public Nod() as Nodos
Public idPtr as integer
'Añadir un nuevo árbol de claves (aqui supongo que idPtr está iniciado a '0')
Public Sub AddNode(NombreArbol as string)
IdPtr=IdPtr + 1
redim preserve Nod(1 to IdPtr)
nod(idptr)=NombreArbol
nod(idPtr).items=0
end sub
'Para añadir una clave en un árbol
Public AddKey(Arbol as string, NewKey as string, Valor as string)
'Aqui pondremos una función que busque si la clave existe
if existKey(Arbol,NewKey,Valor) then
'Código para actualizar el valor de la key
else
Nod(idArbol(Arbol)).items=Nod(idArbol(Arbol)).items+1
redim preserve Nod(IdArbol(Arbol)).regs(1 to Nod(idArbol(Arbol)).items)
Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).key=newkey
Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).loreg=<nodo contiene clave menor>
Nod(IdArbol(Arbol)).regs(Nod(idArbol(Arbol)).items).hireg=<nodo contiene clave mayor>
end if
end sub
Este código te muestra la capacidad de Vbasic de disponer dde algo parecido a la memoria dinámica redimensionando Arrays de tipos con la directiva PRESERVE que mantiene el contenido de la matriz.
Naturalmente tendrás que desarrollar las funciones de búsqueda, eliminación, recorrido etc...y si lo metes todo dentro de una clase tendrás un sistema de árbol balanceado que puedes usar para guardar claves de búsqueda en un fichero etc... ya que grabando en un fichero binario la estructura NOD(), lo podrás leer tantas veces como desees.
Te aconsejo te hagas con el siguiente libro :
PROGRAMACION EN C++ de Luis Joyanes Aguilar (Editorial McGrawHill) es un poco caro pero las estructuras de datos las explica realmente bien (y esa algorítmia la puedes aplicar a cualquier lenguaje que conozcas lo suficientemente bien)
Espero que este rollo te sea útil
Un saludo