From a0ea857685804735d60f19a166274745d8785e62 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sun, 29 Jul 2018 19:01:24 +0200 Subject: Update the traversing sheet function --- src/tree/splay.ml | 5 +++++ src/tree/splay.mli | 5 +++++ 2 files changed, 10 insertions(+) (limited to 'src/tree') diff --git a/src/tree/splay.ml b/src/tree/splay.ml index de7d441..dd1f65d 100644 --- a/src/tree/splay.ml +++ b/src/tree/splay.ml @@ -180,6 +180,11 @@ module Make (El : KEY) = struct _fold [] init !t end + let choose (T tree) = begin match (_subtree_minimum !tree) with + | Leaf -> raise Not_found + | Node (left, (key, value), right) -> C (key, value) + end + let repr formatter (T t) = begin let repr_edge from formatter dest = begin diff --git a/src/tree/splay.mli b/src/tree/splay.mli index a640075..60d067b 100755 --- a/src/tree/splay.mli +++ b/src/tree/splay.mli @@ -48,6 +48,11 @@ module Make (El : KEY) : sig val fold: ('a -> container -> 'a) -> 'a -> t -> 'a + (** Return one element of the given tree, or raise Not_found if the tree is + empty. Which element is chosen is unspecified, but equal elements will be + chosen for equal trees. *) + val choose: t -> container + (** Represent the content in dot syntax *) val repr: Format.formatter -> t -> unit -- cgit v1.2.3