【发布时间】:2013-09-21 00:13:28
【问题描述】:
对于我正在编写的应用程序,我需要测试 Huffman 树的分支以获得特定的属性。为此,我考虑过查询一个节点,并返回一个平面列表,其中包含代表每个分支中项目的子列表。
例如,如果我有这棵树:
-a
|-b
|-c
|-d
我想通过查询最上面的项目 ('a') 来创建一个列表并返回以下列表:
[[a],[b,c,d]]
如果我查询第二片叶子('b')我想返回:
[[b].[c,d]]
等
到目前为止,我将我的树存储为一个元组,如下所示:
(1.0,(0.5,(0.25, (0.125,'d'),(0.125,'c')),(0.25,'b')),(0.5,'a'))
我有一个在叶子上打印信息的功能:
def printTree(tree, prefix = ''):
if len(tree) == 2:
print tree[1], prefix
else:
printTree(tree[1], prefix + '0')
printTree(tree[2], prefix + '1')
我尝试创建一个函数,用 list() 语句替换打印语句,但没有成功。
有人对我该如何解决这个问题有任何想法吗?
【问题讨论】:
-
而不是打印,只需对您尝试创建的列表进行
list.append()调用。 -
你的小树图中的“左”和“右”是什么意思?我无法理解这个
-
@OfirIsrael 从第一个节点开始,'a' 是左边,其余的是右边
标签: python tree huffman-code