2017-09-27 26 views
-1

Donc je suis venu avec ce code, je ne sais pas comment continuer.Comment calculer le nombre de nœuds dans les arbres binaires dans haskell

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

'Nœud _ t1 t2 -> treeSize t1 + 1 + treeSize t2'. Et vous avez seulement besoin de 'Num b', pas de' Integral b'. – Alec

+2

'Num b' est le type le plus général, mais je pense que' Integral b' est un type également utile, et plus instructif sur les valeurs de résultat réellement possibles. – amalloy

+0

@Alec s'il vous plaît faites votre commentaire une réponse OP donc peut accepter comme la bonne réponse. – PieOhPah

Répondre

2

Le dernier cas doit simplement être Node _ t1 t2 -> 1 + treeSize t1 + treeSize t2. En outre, la contrainte Integral b vous donne plus que ce dont vous avez besoin - Num b suffit dans ce cas.

treeSize :: Num b => BinaryTree a -> b 
treeSize Null = 0 
treeSize (Node _ t1 t2) = 1 + treeSize t1 + treeSize t2