我试图写一个程序Huffman-leaves;该过程从创建的哈夫曼树中返回一个对列表。 实例它如何运行从huffman树中得到对
(huffman-leaves sample-tree)
->((A . 8) (C . 5) (B . 1) (D . 1))
什么我COMED了,但得到作家块...
(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
我知道我做错了什么,但我不能看到它。 如何停止在计划中的huffman-tree中进行搜索?任何我应该做的提示都不一样?
如果不知道霍夫曼树的数据定义,很难回答这样的问题。即,形式的评论:;; HuffmanTree是以下之一: - (列表'叶子字符频率'),或者:'(列表'节点HuffmanTree HuffmanTree')。 (我确信这个示例数据定义不是你想要的,它只是为了说明风格。 – pnkfelix 2013-03-12 01:19:35