package grenier
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=c2ab40ae80bce5e48f940925dc594f0886c1e54281ed32f28902bea3a3fe5de9
md5=fea64f9534b5a99df7d53665692af0be
doc/grenier.baltree/Mbt/Make/index.html
Module Mbt.Make
Parameters
Signature
type +'a t = private
| Leaf
| Node of int * 'a t * 'a M.measurable * 'a t * M.measure
(*Node(size, l, x, r)
where:size
is the number of elements in the tree,l
is the left sub-treex
is a user-defined valuer
is the right sub-tree.
Trees are guaranteed balanced by construction, the depth of all branches is O(log
*)size
).
Type of balanced trees
val leaf : 'a t
Leaf constructor, the empty tree
val node : 'a t -> 'a M.measurable -> 'a t -> 'a t
Smart Node constructor, ensuring that the resulting tree is balanced and has the appropriate size.
Cost of node l x r
is expected to be O(log |size l
- size r
|) amortized, i.e proportional to the logarithm of the disbalance. In particular, if l
and r
are similarly-sized, it operates in constant time on average. NOT PROVEN
User-values can be moved in different subtrees of the result, but the ordering is preserved (so data stay correct if the operation applied on values is associative or the relation expected between them is transitive).
Convenience functions
val size : 'a t -> int
Accessor to the size
Concatenate two trees. Cost of join l r
is O(log (min size l
size r
)). NOT PROVEN
val rank : int -> 'a t -> 'a M.measurable
Return the n'th node in tree order