2015-10-18 67 views
1
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

該函數的大部分結構已經存在。你只需要弄清楚在基本情況下該怎麼做以及在遞歸情況下該怎麼做。您將返回一個由string-append組成的字符串,而不是StringNode

val已經是一個字符串,並遞歸調用函數也會給你一個字符串,所以你所要做的就是將它們附加在一起。