SML二叉树减少函数

时间:2011-02-17 02:47:58

标签: tree binary-tree sml reduce

所以我在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函数来给我树的大小?

1 个答案:

答案 0 :(得分:2)

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

我将按以下步骤进行:

  • 熟悉计算树的大小(通过编写符合规范的递归函数)
  • 看看你写的函数和btree_reduce之间的共同点(或者,你可以从你编写的函数中抽象出来的东西)

当然,这是众多方式中的一种。