从递归数据结构中创建字符串

时间:2015-10-18 17:19:27

标签: recursion data-structures racket typed-racket

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))]))

但我不知道如何只将右侧的字符串输出到单个附加字符串中。

1 个答案:

答案 0 :(得分:0)

该功能的大多数结构已经存在。您只需要弄清楚如何处理基本情况以及在递归情况下该怎么做。您将返回使用StringNode生成的字符串而不是string-append

val已经是一个字符串,并且递归调用该函数也会给你一个字符串,所以你要做的就是将它们附加在一起。