2011-10-12 98 views
0

所以目前我有一个程序创建一个霍夫曼树。树由这些字段组成的“Hnodes”组成:右(指向右边的孩子)左边(指向左边的孩子)代码(整数串,理想情况下是0和1,它是该节点的霍夫曼编码)character(包含在节点中的字符)。遍历霍夫曼树

我已经通过添加链接列表中的节点创建了霍夫曼树 - 我知道该树已正确创建。当我创建树时,我告诉节点何时给它一个父节点,如果它是父节点的“正确”,那么它的代码字符串为1,如果为0,但显然在创建完整个树之后,每个节点都是只会有一个0或1,但不是像00100101这样的字符串。我的问题是,现在我有这棵树,我可以遍历它吗?我理解的想法是给每个孩子父母的代码+孩子自己的代码,但我不知道如何循环通过树来完成这一点。

预先感谢您。

+1

您的代码示例以及您如何试图解决此问题将会有所帮助。 –

+1

发布你的codez,如果这是家庭作业,它需要适当标记:)。 – Jack

回答

0

也许这样?

ExpandBinaryPaths(node, prefix) 
    1. if node is null then return 
    2. else then 
    3. node.binary = prefix concat node.binary 
    4. ExpandBinaryPaths(node.left, node.binary) 
    5. ExpandBinaryPaths(node.right, node.binary) 
    6. return 

这个想法是你可以在没有前缀的根上调用它... ExpandBinaryPaths(root,“”)。