寻找身高

Adi*_*ian 2 tree haskell list

我有以下数据类型

data Tree a -> Node a [Tree a]

并希望找到所有节点的标签和树的高度。

这是我所做的:

height:: Tree a -> Integer height

 (Node _ (x:xs)) = 1 + maximum height' (x:xs)
 height' (x:xs) = map height (x:xs)
Run Code Online (Sandbox Code Playgroud)

我希望height'会返回映射到x:xs的高度列表,并尝试查找该值的最大值,但ghci不赞成此处的map函数。

Wil*_*sem 5

您可以使用以下代码在一个衬里中编写此代码:

height :: Integral i => Tree a -> i
height (Node _ cs) = 1 + maximum (0 : map height cs)
Run Code Online (Sandbox Code Playgroud)

这里的每一个节点,因此,我们回到1 + …那里是最大的0,并且这些节点的孩子的高度。我们在这里0用来防止这种情况,如果Node没有孩子的话,maximum将在一个空列表上工作,从而引发错误。