0

二分木の高さ(つまり、ルートからリーフまでの最長パスに沿ったノードの数)を見つける関数を作成しました。

let rec height (t: 'a tree) : int =
begin match t with
| Empty -> 0
| Node (l, v, r) -> 1 + max (height 1) (height r)
end

私の関数は正しいと思いますが、テストを実行したときに発生する構文エラーは、「この関数はあまりにも多くの引数に適用されています。';'を忘れた可能性があります。

これは私のテストケースです

let test () : bool =
height Node(Node(Empty, 1, Empty), 3, Node(Empty, 2, Node(Empty, 4, Empty))) = 3
;; run_test "Node(Node(Empty, 1, Empty), 3, Node(Empty, 2, Node(Empty, 4, Empty)))" test

私のテストケースの何が問題になっていますか?

ありがとう!

4

1 に答える 1

2

式を考えてみましょう

height Node (Empty, 0, Empty)

OCamlでは、隣接する値は関数適用を示し、左結合です。したがって、これは次と同じです。

(height Node) (Empty, 0, Empty)

以下が機能します。

height (Node (Empty, 0, Empty))

つまり、かっこを追加するだけです。

于 2013-02-02T02:29:54.283 に答える