【发布时间】:2013-03-12 00:04:48
【问题描述】:
我正在尝试编写一个 Huffman-leaves 程序;该过程从创建的霍夫曼树中返回一个对列表。 运行方式示例
(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
我知道我做错了什么,但我看不到。 如何停止在方案中的霍夫曼树中搜索?有什么我应该做的不同的提示吗?
【问题讨论】:
-
在不知道 Huffman Tree 的数据定义的情况下很难回答这样的问题。即,形式的评论:;; HuffmanTree 是以下之一:-
(list 'Leaf Char Frequency),或:-(list 'Node HuffmanTree HuffmanTree)。 (我确定这个示例数据定义不是您想要的;它只是为了说明风格。
标签: list tree scheme huffman-code