SML二叉树reduce函数

发布于 2024-10-18 04:37:48 字数 619 浏览 6 评论 0原文

我收到了 SML 的作业,并且需要一些入门帮助。

问题是这样的

编写一个类型为“a btree ->”的函数 btree_size返回 int 二叉树的大小。 (二叉树的大小是 二叉树中的元素)。例如,btree_size(Node(Leaf, 1, Node (Leaf, 2, Leaf))) 应返回 2。您的函数必须使用 提供btree_reduce函数,最多3行。

btree_reduce 函数是这样的

(* A reduction function. *)
     (* btree_reduce : ('b * 'a * 'b -> 'b) -> 'b -> 'a tree -> 'b) *)
    fun btree_reduce f b bt =
      case bt of
      Leaf => b
      | Node (l, x, r) => f (btree_reduce f b l, x, btree_reduce f b r)

我到底如何创建一个 btree_size 函数来获取 btree 并使用 reduce 函数来给出树的大小?

So I've got an assignment in SML and I need a bit of help getting started.

The problem goes like this

Write a function btree_size of type 'a btree -> int that returns the
size of the binary tree. (The size of a binary tree is the number of
elements in the binary tree). For example, btree_size (Node (Leaf, 1,
Node (Leaf, 2, Leaf))) should return 2. Your function must use the
provided btree_reduce function and should be at most 3 lines long.

The btree_reduce function is this

(* A reduction function. *)
     (* btree_reduce : ('b * 'a * 'b -> 'b) -> 'b -> 'a tree -> 'b) *)
    fun btree_reduce f b bt =
      case bt of
      Leaf => b
      | Node (l, x, r) => f (btree_reduce f b l, x, btree_reduce f b r)

How in the world do I make a btree_size function that takes a btree and uses the reduce function to give me the size of the tree?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我偏爱纯白色 2024-10-25 04:37:48

由于这是一项作业,我不会直接给出答案。 :)

我将按照以下步骤进行:

  • 熟悉计算树的大小(通过编写符合您规范的递归函数),
  • 看看您编写的函数和 btree_reduce 之间有什么共同点(或者,可以从您编写的函数)

当然,这是众多方法之一。

Since this is a homework, I will refrain from giving direct answers. :)

I'd proceed as follows:

  • get acquainted with computing the size of the tree (by writing a recursive function which meets your specification)
  • see what is common between the function you wrote and btree_reduce (or, what could be abstracted out from the function you wrote)

This is one of the many ways, of course.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文