-1
所以我想出了這個代碼,不知道如何繼續。如何計算haskell中二叉樹的節點數
treeSize :: (Integral b) => BinaryTree a -> b
treeSize tree = case tree of
Null -> 0
Node _ t1 t2 ->
所以我想出了這個代碼,不知道如何繼續。如何計算haskell中二叉樹的節點數
treeSize :: (Integral b) => BinaryTree a -> b
treeSize tree = case tree of
Null -> 0
Node _ t1 t2 ->
最後一種情況只需要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
'Node _ t1 t2 - > treeSize t1 + 1 + treeSize t2'。你真的只需要'Num b',而不是'Integral b'。 – Alec
'Num b'是最普遍的類型,但我認爲'Integral b'是一個同樣有用的類型,並且對於實際可能的結果值有更多的信息。 – amalloy
@Alec請讓您的評論成爲答案,以便OP可以接受爲正確答案。 – PieOhPah