二叉树的类型为“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!".
答案 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。不要指望,人们会做你的功课。