对于我的任务,我将对霍夫曼树进行编码和解码。我在创建树时遇到问题,我被卡住了。
不要介意打印语句 - 它们只是供我测试并查看我的函数运行时的输出。
对于第一个 for 循环,我从我在主块中用于测试的文本文件中获取了所有值和索引。
在第二个 for 循环中,我将所有内容插入到优先级队列中。
我对下一步要去哪里感到很困惑——我正在尝试制作节点,但我对如何取得进展感到困惑。有人可以告诉我我这样做是否正确吗?
def _create_code(self, frequencies):
'''(HuffmanCoder, sequence(int)) -> NoneType
iterate over index into the sequence keeping it 256 elements long, '''
#fix docstring
p = PriorityQueue()
print frequencies
index = 0
for value in frequencies:
if value != 0:
print value #priority
print index #elm
print '-----------'
index = index + 1
for i in range(len(frequencies)):
if frequencies[i] != 0:
p.insert(i, frequencies[i])
print i,frequencies[i]
if p.is_empty():
a = p.get_min()
b = p.get_min()
n1 = self.HuffmanNode(None, None, a)
n2 = self.HuffmanNode(None, None, b)
print a, b, n1, n2
while not p.is_empty():
p.get_min()
我手动插入了前两个来启动我的树,对吗?
我如何继续前进?我知道它的想法,只是在代码方面我非常卡住。
顺便说一句,这是使用python。我尝试查看维基百科,我知道步骤,我只需要代码方面的帮助以及我应该如何继续,谢谢!
HuffmanNode 来自这个嵌套类:
class HuffmanNode(object):
def __init__(self, left=None, right=None, root=None):
self.left = left
self.right = right
self.root = root