2017-09-27 15 views
-1

このコードを思いついたので、続行する方法がわかりません。haskellでバイナリツリーのノード数を計算する方法

treeSize :: (Integral b) => BinaryTree a -> b 
treeSize tree = case tree of 
    Null -> 0 
    Node _ t1 t2 -> 
+2

'ノード_t1 t2 - >ツリーサイズt1 + 1 +ツリーサイズt2'。そしてあなたは本当に '整数b 'ではなく、' Num b'だけを必要とします。 – Alec

+2

'Num b'は最も一般的な型ですが、' Integral b'も同様に有用な型であり、実際にどのような結果値が可能であるかをより詳細に知っていると思います。 – amalloy

+0

@Alec OPが正しい答えとして受け入れることができるように、あなたのコメントを回答してください。 – PieOhPah

答えて

2

最後のケースは、Node _ t1 t2 -> 1 + treeSize t1 + treeSize t2である必要があります。また、Integral bの制約により、必要以上のものが得られます。この場合はNum bで十分です。

treeSize :: Num b => BinaryTree a -> b 
treeSize Null = 0 
treeSize (Node _ t1 t2) = 1 + treeSize t1 + treeSize t2 
関連する問題