二叉树字数和concat

时间:2017-02-23 19:15:40

标签: tree ocaml binary-tree

二叉树的类型为“ocaml中的树”,如下所示:

type 'a tree = Leaf of 'a
         | Fork of 'a * 'a tree * 'a tree
let t3 = Fork ("Hello", Leaf "World", Leaf "!")

如何编写一个以字符串树作为输入的函数t_charcount,并计算值包含的字符总数。函数的类型是:string tree - >中间体

    t_charcount t3 gives int = 11. 

我如何写一个函数:

编写一个函数t_concat,它将字符串树的值连接在一起。此函数的类型是:string tree - >串

   t_concat t3 gives string = "HelloWorld!". 

1 个答案:

答案 0 :(得分:1)

  

我如何编写一个函数t_charcount,它将字符串树作为输入并计算值包含的字符总数

使用结构归纳 - 考虑基本情况(例如,叶节点中有多少个字符),然后考虑如何连接Fork节点中左右子树的结果,这是你的一般骨架:

let t_charcount tree = 
  let rec loop tree sum = match tree with
   | Leaf x -> ...base case...
   | Fork (x,t1,t2) -> ...induction case.. in
 loop tree 0
  

编写一个函数t_concat,它将字符串树的值连接在一起。此函数的类型是:string tree - >串

您应该使用与charcount函数相同的方法,除了不是将结果累加到整数中,您应该使用连接运算符^将结果累积到字符串中。

P.S。不要指望,人们会做你的功课。