(* 2分木を表す型 *) type tree_t = Empty | Node of tree_t * int * tree_t (* 2分木の例 *) let tree0 = Empty let tree1 = Node (Empty, 3, Empty) let tree2 = Node (Empty, 7, tree1) let tree3 = Node (Empty, 24, Empty) let tree4 = Node (tree2, 17, tree3) (* 目的:木の中の整数の合計を返す *) (* sum_tree : tree_t -> int *) let rec sum_tree tree = match tree with Empty -> 0 | Node (l, n, r) -> sum_tree l + n + sum_tree r (* テスト *) let test0 = sum_tree tree0 = 0 let test1 = sum_tree tree1 = 3 let test2 = sum_tree tree2 = 10 let test3 = sum_tree tree3 = 24 let test4 = sum_tree tree4 = 51