2015-12-22 2 views
-2

Пожалуйста, обратите внимание на следующее определение розового дерева в HaskellРоза Дерево в Haskell - Нахождение Листов

data Rose a = a :> [Rose a] 
     deriving (Eq, Show) 

root (a :> rs) = a 

children (a :> rs) = rs 

вместе с выполнением функций, чтобы получить корень и ребенок розового дерева. бит, где я до сих пор изо всех сил, как реализовать функции

size :: Rose a -> Int 
leaves :: Rose a -> Int 

что сосчитать количество узлов в дереве, розы соответственно количество листьев (узлов без каких-либо детей). Может ли кто-нибудь помочь?

ответ

3
size (_ :> ts) = ? + sum ? 

leaves (_ :> []) = ? 
leaves (_ :> ts) = sum ? 

Вам нужно будет использовать рекурсию для заполнения пробелов и общей функции более высокого порядка.

Смежные вопросы