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