的存在让我们说,我们拥有这个定义类型:功能测试树的叶
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