Module type Avl_tarjan.GRAPH


module type GRAPH = sig  end
The client must provide an implementation of graphs which fullfills the signature GRAPH.


type graph
The type of graphs.


type node
The type of nodes.

val iter_nodes : (node -> unit) -> graph -> unit
iter_nodes f g applies f on every nodes of the graph g. The order in which nodes are considered does not matter and may change between different application of the function on the same graph. However, each node must be considered exactly once.
val iter_successors : (node -> unit) -> node -> unit
iter_successors f nd applies f on every successors of the node nd in its graph. The order in which successors are considere does not matter. The graph is not required to be simple (i.e. iter_successors f nd may apply f an arbitrary number of time the function f on each of nd's successors, as long as this number is fixed.
val get : node -> int
Every node must carry a transient integer field. The following functions allows reading and updating this field. No assumption is made by the module on the initial content of this field at each function call. However, the client cannot make any assumption on the final content too.
val set : node -> int -> unit