(define (grow-huffman-tree pairs) (define (make-tree leaf-set) (cond ((null? leaf-set) '()) ; no element ((null? (cdr leaf-set)) (car leaf-set)) ; one element (else ; two elements (let ((first (car leaf-set)) (second (cadr leaf-set)) (rest (cddr leaf-set))) (if (null? rest) (make-code-tree first second) (make-code-tree (make-code-tree first second) (make-tree rest))))))) (make-tree (make-leaf-set pairs)))