(* 2分木を表す型 *) type tree_t = Empty | Node of tree_t * int * tree_t (* 2分探索木の例 *) let tree0 = Empty let tree1 = Node (Empty, 7, Empty) let tree2 = Node (Empty, 3, tree1) let tree3 = Node (Empty, 24, Empty) let tree4 = Node (tree2, 17, tree3) (* 目的:木 tree の中に整数 m があるか判定する *) (* search : tree_t -> int -> bool *) let rec search tree m = match tree with Empty -> false | Node (l, n, r) -> if m < n then search l m else if n < m then search r m else (* m = n *) true (* テスト *) let test0 = search tree0 0 = false let test1 = search tree4 17 = true let test2 = search tree4 7 = true let test3 = search tree4 5 = false let test4 = search tree4 20 = false