我有一个函数treeLeaves :: BinaryTree a -> [a]
。这个函数应该采用一个二叉树,并返回一个包含该树叶子的列表——也就是说,所有下面没有子树的节点。你能帮我吗?我不知道该怎么开始。
data BinaryTree a = Null | Node a (BinaryTree a) (BinaryTree a)
使用模式匹配和递归很容易做到这一点。在递归中,有基本情况和递归情况。
-
基本情况是函数在不调用的情况下返回一些东西相同功能
-
递归的情况是,函数用较低范围的参数调用同一个函数,并在返回之前对其执行某些操作。
因此,对于Haskell中的Tree结构,您需要以下三件事。
- 树定义的基本情况模式
- 叶节点的模式
- 递归情况的模式
对于上述每一项,您还需要弄清楚函数需要返回什么。