使用Haskell获取二叉树的叶子

时间:2018-11-04 13:25:00

标签: haskell

我有一个函数treeLeaves :: BinaryTree a -> [a]。此函数应采用一棵二叉树并返回一个包含该树的叶子的列表,即所有在其下没有子树的节点。你能帮助我吗?我不知道如何开始。

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

1 个答案:

答案 0 :(得分:0)

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

  • 基本情况是函数不调用而返回某些内容 相同的功能

  • 递归情况是函数以较小范围的参数调用同一个函数,并在返回之前对其进行处理。

因此对于Haskell中的Tree结构,您需要遵循以下三点。

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

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