Код Ревью

Сравни свои решения

    #| BEGIN (Введите свое решение) |#
(define (tree->list tree)
  (if (null? tree)
      '()
      (append (tree->list (left-branch tree))
              (list (entry tree))
              (tree->list (right-branch tree)))))

(define (union-list l1 l2)
  (cond ((null? l1) l2)
        ((null? l2) l1)
        ((= (car l1) (car l2))
         (cons (car l1) (union-list (cdr l1) (cdr l2))))
        ((< (car l1) (car l2))
         (cons (car l1) (union-list (cdr l1) l2)))
        (else
         (cons (car l2) (union-list l1 (cdr l2))))))

(define (intersection-list l1 l2)
  (cond ((or (null? l1) (null? l2)) '())
        ((= (car l1) (car l2))
         (cons (car l1) (intersection-list (cdr l1) (cdr l2))))
        ((< (car l1) (car l2))
         (intersection-list (cdr l1) l2))
        (else
         (intersection-list l1 (cdr l2)))))

(define (union-set t1 t2)
  (list->tree (union-list (tree->list t1) (tree->list t2))))

(define (intersection-set t1 t2)
  (list->tree (intersection-list (tree->list t1) (tree->list t2))))

#| END |#