2017-09-27 56 views
-1

所以我想出了這個代碼,不知道如何繼續。如何計算haskell中二叉樹的節點數

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

'Node _ t1 t2 - > treeSize t1 + 1 + treeSize t2'。你真的只需要'Num b',而不是'Integral 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