2008. 8. 1.

연습문제 2.68

(define (element-of-set? x set)
  (cond ((null? set) #f)
        ((eq? x (car set)) #t)
        (else (element-of-set? x (cdr set)))))


(define (encode-symbol symbol tree)
  (define (inner-encode symbol node result)
    (if (leaf? node)
        result
        (cond ((element-of-set? symbol (symbols (left-branch node))) (inner-encode symbol (left-branch node) (cons 0 result)))
              ((element-of-set? symbol (symbols (right-branch node))) (inner-encode symbol (right-branch node) (cons 1 result)))
              (else (error "bad symbol -- ENCODE-SYMBOL" symbol)))))
  (reverse (inner-encode symbol tree '())))

댓글 없음:

댓글 쓰기