sig
  type 'a bintree = Leaf | Node of 'a Trees.bintree * 'a * 'a Trees.bintree
  val tree_count : 'a Trees.bintree -> int
  val tree_sum : int Trees.bintree -> int
  val tree_mem : 'a -> 'a Trees.bintree -> bool
  val tree_preorder : 'a Trees.bintree -> 'a list
  val tree_inorder : 'a Trees.bintree -> 'a list
  val tree_postorder : 'a Trees.bintree -> 'a list
  val tree_fold : 'a -> ('b -> 'a -> 'a -> 'a) -> 'b Trees.bintree -> 'a
  val tree_count_fold : 'a Trees.bintree -> int
  val tree_sum_fold : int Trees.bintree -> int
  val tree_mem_fold : 'a -> 'a Trees.bintree -> bool
  val tree_preorder_fold : 'a Trees.bintree -> 'a list
  val tree_inorder_fold : 'a Trees.bintree -> 'a list
  val tree_postorder_fold : 'a Trees.bintree -> 'a list
end