let rec exists p = function
        Empty -> false
      | Node(l, v, r, _) -> p v || exists p l || exists p r