我写了一个函数来查找二叉树的高度(即从根到叶子的最长路径上的节点数)。
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
我的测试用例有什么问题?
谢谢!
答案 0 :(得分:2)
考虑表达式
height Node (Empty, 0, Empty)
在OCaml中,相邻值表示功能应用,它是左关联的。所以这与:
相同(height Node) (Empty, 0, Empty)
以下内容可行:
height (Node (Empty, 0, Empty))
换句话说,您只需要添加括号。