我已经定义了一个二叉树:
data Tree = Null | Node Tree Int Tree
Run Code Online (Sandbox Code Playgroud)
并实现了一个函数,它将产生所有节点的值的总和:
sumOfValues :: Tree -> Int
sumOfValues Null = 0
sumOfValues (Node Null v Null) = v
sumOfValues (Node Null v t2) = v + (sumOfValues t2)
sumOfValues (Node t1 v Null) = v + (sumOfValues t1)
sumOfValues (Node t1 v t2) = v + (sumOfValues t1) + (sumOfValues t2)
Run Code Online (Sandbox Code Playgroud)
它按预期工作.我有想法也尝试使用警卫来实现它:
sumOfValues2 :: Tree -> Int
sumOfValues2 Null = 0
sumOfValues2 (Node t1 v t2)
| t1 == Null && …Run Code Online (Sandbox Code Playgroud)