的存在讓我們說,我們擁有這個定義類型:功能測試樹的葉
data Tree a = Leaf a | Branch [Tree a] deriving (Show,Eq)
我想說的是,這將返回一個布爾函數。 False
如果我的二叉樹包含一個葉子,並且如果不包含,則返回True
。
這裏是我的代碼:
tester :: Tree a -> Bool
tester (Leaf x) = False
tester (Branch y) = if (Branch (map tester y)) then True else False
我知道,這樣做的主要問題是,有沒有辦法來評估(Branch (map tester y))
,但我真的不知道如何解決它。
我可以添加一個新的子句,例如像這樣的tester (Branch y) = True
,但我不認爲這是一個好主意。
(請注意,如果x在其他情況下爲真,否則在所有情況下都可以簡化爲x)。 – huon
這不是二叉樹 - 二元樹e是一棵樹,它的分支被定義爲'branch(Tree a)(Tree a)' – amindfv