ハフマンが残した手続きを書こうとしています。このプロシージャは、作成されたハフマン ツリーからペアのリストを返します。実行方法の例
(huffman-leaves sample-tree)
->((A . 8) (C . 5) (B . 1) (D . 1))
私が思いついたが、作家がブロックしたこと...
(define (huffman-leaves tree)
(define (huffman-get-pairs current-branch pairs)
(if (or (null? tree) (null? current-branch))
pairs
(let ((next-branch
(get-branch (car current-branch) current-branch)))
(not (member? next-branch pairs)
(if (leaf? next-branch)
(cons (append pairs next-branch)
(display pairs)
(huffman-get-pairs (cadr current-branch) pairs))
(huffman-get-pairs next-branch pairs))))))
(huffman-get-pairs tree '()))
(member? item 'list) #if item in list return #t else #false
私は何か間違ったことをしていることを知っていますが、それを見ることはできません。スキームでハフマンツリーの検索を停止するにはどうすればよいですか? 私が違うことをしなければならないヒントはありますか?