sig
type a
type +'a t
val empty : 'a Knn.S.t
val create_balanced : (Knn.S.a * 'a) list -> 'a Knn.S.t
val add : Knn.S.a -> 'a -> 'a Knn.S.t -> 'a Knn.S.t
val find_k_nearest :
'a Knn.S.t -> int -> float -> Knn.S.a -> (float * Knn.S.a * 'a) list
val contents : 'a Knn.S.t -> (Knn.S.a * 'a) list
val rebalance : 'a Knn.S.t -> 'a Knn.S.t
end