Skip to content

Instantly share code, notes, and snippets.

@htor
Created February 26, 2013 17:36
Show Gist options
  • Select an option

  • Save htor/5040405 to your computer and use it in GitHub Desktop.

Select an option

Save htor/5040405 to your computer and use it in GitHub Desktop.

Revisions

  1. htor created this gist Feb 26, 2013.
    14 changes: 14 additions & 0 deletions huff.scm
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,14 @@
    (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)))