穿越霍夫曼树

时间:2011-10-12 04:18:38

标签: java huffman-code

所以目前我有一个程序可以创建一个霍夫曼树。树由具有以下字段的“Hnodes”组成:右(指向右子)左(指向左子)代码(整数字符串,理想情况下是0和1将是此节点的霍夫曼代码)字符(节点中包含的字符。)

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

提前谢谢。

1 个答案:

答案 0 :(得分: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,“”)。