En el pasado, he usado ocamlgraph. Esto no es una libra trivial para usar, pero si necesita insertar nodos y cambiar la ruta, ese podría ser el truco, nunca lo he usado en un contexto de árbol b ...
Y extraído del documentación idioma:
El uso más común de los tipos de variantes es describir los datos recursivas estructuras. Consideremos por ejemplo el tipo de árboles binarios:
#type 'a btree = Empty | Node of 'a * 'a btree * 'a btree;;
type 'a btree = Empty | Node of 'a * 'a btree * 'a btree
Esta definición se lee como sigue: un árbol binario que contiene valores de tipo 'un (un tipo arbitrario) es o bien vacío, o es un nodo que contiene un valor de de tipo 'a y dos subárboles que también contiene valores de tipo' a, es decir, dos 'a btree.
Operaciones en los árboles binarios se expresan naturalmente como recursivas funciones siguientes la misma estructura como la definición de tipo en sí. Para ejemplo, aquí son funciones realizar la búsqueda e inserción en árboles binarios ordenados (elementos aumento de izquierda a derecha):
#let rec member x btree =
match btree with
Empty -> false
| Node(y, left, right) ->
if x = y then true else
if x < y then member x left else member x right;;
val member : 'a -> 'a btree -> bool = <fun>
#let rec insert x btree =
match btree with
Empty -> Node(x, Empty, Empty)
| Node(y, left, right) ->
if x <= y then Node(y, insert x left, right)
else Node(y, left, insert x right);;
val insert : 'a -> 'a btree -> 'a btree = <fun>
espero que esto ayude
Sí, pero estoy usando estos árboles para hacer sintaxis de oraciones, así que no puedo simplemente arrojar valores allí. necesitan mantener el orden, y yo esperaba establecer este orden simplemente creando el árbol correctamente, aunque supongo que podría usar un tipo de envoltorio con un número y la palabra misma ... –
Usted * puede * establecer el orden por creando el árbol apropiadamente En realidad, el conjunto de módulos mantiene los elementos del árbol en orden (el elemento más bajo en el descendiente más a la izquierda), así que todavía creo que es una buena fuente de inspiración. –