我已经为霍夫曼编码创建了一个算法,该算法为给定的符号集及其pmf创建霍夫曼树。我的算法使用我自己的Node
类,其中包含实例变量string symbol
,float probability
,list children
,string code
。
我可以递归迭代我的树,如下所示:
def print_codes(root):
for child in root.children: # Iterate through children
if (child.symbol): # If node isn't a blank node
print(child.symbol + " = " + child.code) # print its original symbol and code
if (child.children): # If node has children
print_codes(child) # print their codes recursively
每个父节点都是一个空节点,每个叶节点都包含我编码的albhabet的一个符号。如果我想找到每个节点代码的长度总和(只有node.symbol == True
的节点,我怎么能在递归函数中实现这个?我会从每个递归调用返回哪里?< / p>
答案 0 :(得分:0)
没有数据就很难测试,但这会让你更接近你的目标:
def recursive_len_sum(node):
temp = 0
if node.symbol:
temp += len(node.code)
for child in node.children:
temp += recursive_len_sum(child)
return temp
recursive_len_sum(root)