Тест за намиране на височината на двоично дърво

Написах функция, която намира височината на двоично дърво (т.е. # възли по най-дългия път от корена до листа).

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

Какво не е наред с моя тестов случай?

Благодаря!


person user1993381    schedule 02.02.2013    source източник


Отговори (1)


Помислете за израза

height Node (Empty, 0, Empty)

В OCaml съседните стойности показват приложение на функция, което е ляво-асоциативно. Така че това е същото като:

(height Node) (Empty, 0, Empty)

Следното ще работи:

height (Node (Empty, 0, Empty))

С други думи, просто трябва да добавите скоби.

person Jeffrey Scofield    schedule 02.02.2013