给定这个使用折叠的定义,我将如何编写一个contains,平衡的函数。
data Tree a = Tree a [Tree a]
treeFold :: (a -> [b] -> b) -> Tree a -> b
treeContains :: Eq a => a -> Tree a -> Bool
treeBalanced :: Tree a -> Bool
请注意,在上面的定义中,不允许使用空树,并且叶子是具有空子树列表的树。
contains函数确定树是否包含给定的标签。
平衡函数确定树是否平衡。
一棵树是平衡的,如果它的子树的高度最多相差一个,并且子树是平衡的
到目前为止,我得到的 contains 函数如下所示。
treeContains :: Eq a => a -> Tree a -> Bool
treeContains a = treeFold (\x y -> if a == x then True else ...)
那么你如何做else部分指示...
任何帮助将不胜感激。