使用Haskell获取二叉树的叶子

使用Haskell获取二叉树的叶子,haskell,Haskell,我有一个函数treeLeaves::BinaryTree a->[a]。这个函数应该获取一个二叉树,并返回一个包含该树的叶子的列表,也就是所有在它们下面没有子树的节点。你能帮助我吗?我不知道如何开始 data BinaryTree a = Null | Node a (BinaryTree a) (BinaryTree a) 使用模式匹配和递归很容易做到这一点。在递归中,有基本情况和递归情况 基本情况是函数不调用 相同功能 递归情况下,函数调用具有较低作用域参数的同一函数,并在返回之前对其执

我有一个函数
treeLeaves::BinaryTree a->[a]
。这个函数应该获取一个二叉树,并返回一个包含该树的叶子的列表,也就是所有在它们下面没有子树的节点。你能帮助我吗?我不知道如何开始

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

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

  • 基本情况是函数不调用 相同功能

  • 递归情况下,函数调用具有较低作用域参数的同一函数,并在返回之前对其执行某些操作

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

  • 树定义的基本大小写模式
  • 叶节点的模式
  • 递归案例的模式

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

    如果您不知道如何从某个函数开始,这通常是因为您的开始“太高”。在这种情况下,首先做一些更基本的练习是有意义的。我会遵循前面的注释建议,但无论如何,包括
    BinaryTree
    定义(或链接到它)都会很有用欢迎来到Stackoverflow@Lisa!你的树的定义是什么?到目前为止你试过什么?好的,我将使用模式匹配和递归来实现这个函数。有很多关于他们的资源,你可以从和f.e.开始,欢迎来到SO。因此,这不是一个家庭作业或编码服务。你应该发布你的最佳尝试,并询问你遇到的具体问题。尝试使用以下所有方法:1)模式匹配,2)树上的递归,3)
    ++
    连接列表。