Recursion 从递归数据结构生成字符串

Recursion 从递归数据结构生成字符串,recursion,data-structures,racket,typed-racket,Recursion,Data Structures,Racket,Typed Racket,使用上面的定义。我们必须创建一个函数,该函数可以生成二级数据结构,并输出一个字符串,该字符串是结构右侧的所有字母 使结构递归非常容易: define-type StringTree (U StringNode 'SEmpty)) (define-struct StringNode ([val : String] [left : StringTree] [right : StringTree])) 但是我不知道如何只将右侧的字符串输出为一个附加字符串 函数的大部分结构已

使用上面的定义。我们必须创建一个函数,该函数可以生成二级数据结构,并输出一个字符串,该字符串是结构右侧的所有字母

使结构递归非常容易:

define-type StringTree (U StringNode 'SEmpty))

(define-struct StringNode
  ([val   : String]
   [left  : StringTree]
   [right : StringTree])) 

但是我不知道如何只将右侧的字符串输出为一个附加字符串

函数的大部分结构已经存在。您只需要知道在基本情况下要做什么,在递归情况下要做什么。您将返回由
string append
生成的字符串,而不是
StringNode


val
已经是一个字符串,递归调用函数也会得到一个字符串,因此您所要做的就是将它们附加在一起。

函数的大部分结构已经存在。您只需要知道在基本情况下要做什么,在递归情况下要做什么。您将返回由
string append
生成的字符串,而不是
StringNode

val
已经是一个字符串,递归调用函数也会得到一个字符串,所以您所要做的就是将它们附加在一起

 (: mirror : StringTree -> StringTree)
 (define (mirror a)
   (match a
       ['SEmpty 'SEmpty]
       [(StringNode val left right)
        (StringNode val (mirror left) (mirror right))]))