使用Haskell获取二叉树的叶子



我有一个函数treeLeaves :: BinaryTree a -> [a]。这个函数应该采用一个二叉树,并返回一个包含该树叶子的列表——也就是说,所有下面没有子树的节点。你能帮我吗?我不知道该怎么开始。

data BinaryTree a = Null | Node a (BinaryTree a) (BinaryTree a)

使用模式匹配和递归很容易做到这一点。在递归中,有基本情况和递归情况。

  • 基本情况是函数在不调用的情况下返回一些东西相同功能

  • 递归的情况是,函数用较低范围的参数调用同一个函数,并在返回之前对其执行某些操作。

因此,对于Haskell中的Tree结构,您需要以下三件事。

  1. 树定义的基本情况模式
  2. 叶节点的模式
  3. 递归情况的模式

对于上述每一项,您还需要弄清楚函数需要返回什么。

最新更新