다음 코드에 대해 "map-diff"함수가 올바르게 작동한다고 가정합니다. 산술 구문 분석 트리를 가져와 선주문 표기법으로 출력하는 방법에 대해 궁금합니다. 내 "사전 주문"기능 내에서 "지도 - diff"기능을 사용할 수 있기를 원하지만이 작업을 수행하는 방법을 알아낼 수 없습니다. 내 기본 사례가 정확합니까?표기법 스키마의 표기법
(define (make-tree value left right) (list value left right))
(define (value tree) (car tree))
(define (left tree) (cadr tree))
(define (right tree) (caddr tree))
(define (prepare x)
(cond ((number? x) (number->string x))
((char? x) (string x))))
(define x
(map-diff (lambda (x) (prepare x))
(list #\+
(list #\*
(list 3 '() '())
(list 9 '() '()))
(list #\+
(list #\/ (list 5 '() '()) '())
(list 4 '() '())))))
(define (preorder T)
(cond ((null? T) "")
((eq? (value T) "+")
(cons (value T) (cons (preorder (left T)) (preorder (right T)))))
((eq? (value T) "*")
(cons (value T) (cons (preorder (left T)) (preorder (right T)))))
((eq? (value T) "-")
(cons "-" (preorder (left T))))
((eq? (value T) "/")
(cons "/" (preorder (left T))))
(else (value T))))
(preorder x)
입니까? 당신의 목표가'준비'와'지도 - 차이'를 되 돌리는 것이라고 말하는 것입니까? – GoZoner
각 노드를 방문한 다음 접두사 표기법으로 표현식을 생성하려고합니다. –
원하는 출력이 무엇인지 질문에 추가하십시오. – GoZoner