我需要一些帮助,请查看编辑2 这是霍夫曼的代码:
def printHuffTree(huffTree, prefix = ''):
if len(huffTree) == 2:
print huffTree[1], prefix
exampleData = [
(0.124167 , 'e')
]
if __name__ == '__main__':
huffTree = makeHuffTree(exampleData)
printHuffTree(huffTree)
输出是:
e 00
t 01
a 10
i 11
我需要一些功能或任何可以计算这个数字的东西;例如,如果
e 00
我需要计算这里有多少个数字:2 (0 and 0)
所以输出我需要:
e 00 2
t 01 2
a 10 2
i 11 2
答案 0 :(得分:4)
根据我的理解,您需要将len(prefix)
添加到最终print
:
def printHuffTree(huffTree, prefix = ''):
if len(huffTree) == 2:
print huffTree[1], prefix, len(prefix)
更新以回答新问题
def printHuffTree(huffTree, prefix = '', s=0):
if len(huffTree) == 2:
print huffTree[1], prefix, len(prefix)
return len(prefix)*huffTree[0]
else:
s+= printHuffTree(huffTree[1], prefix + '0')
s+= printHuffTree(huffTree[2], prefix + '1')
return s
您需要对其进行测试
答案 1 :(得分:2)
编辑2:
在exampleData
中使用您的数据,如果c
是常数,则每个数字乘以:
result = sum(c*i[0] for i in exampleData)
我仍然不理解你的其余问题。
答案 2 :(得分:0)
我想你已回答了自己的问题?!只需将print huffTree[1], prefix
更改为print huffTree[1], prefix, len(prefix)
。
答案 3 :(得分:0)
用
替换代码的if部分if len(huffTree) == 2:
print huffTree[1], prefix, len(prefix)