2015-10-18 6 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

Основная часть функции уже существует. Вам нужно только выяснить, что делать для базового случая и что делать в рекурсивном случае. Вместо StringNode вы вернете строку с string-append.

val уже является строкой, и вызов функции рекурсивно также даст вам строку, поэтому все, что вам нужно сделать, это добавить их вместе.