define-type StringTree (U StringNode 'SEmpty))
(define-struct StringNode
([val : String]
[left : StringTree]
[right : StringTree]))
使用上面的定义。我们必须创建一个可以创建二级数据结构的函数,并输出一个字符串,该字符串是结构右侧的所有字母。
使结构递归非常简单:
(: mirror : StringTree -> StringTree)
(define (mirror a)
(match a
['SEmpty 'SEmpty]
[(StringNode val left right)
(StringNode val (mirror left) (mirror right))]))
但我不知道如何只将右侧的字符串输出到单个附加字符串中。
答案 0 :(得分:0)
该功能的大多数结构已经存在。您只需要弄清楚如何处理基本情况以及在递归情况下该怎么做。您将返回使用StringNode
生成的字符串而不是string-append
。
val
已经是一个字符串,并且递归调用该函数也会给你一个字符串,所以你要做的就是将它们附加在一起。