在霍夫曼树上寻找路径

时间:2010-07-23 03:41:41

标签: java tree huffman-code traversal

我正在研究一个霍夫曼树,我正在试图弄清楚如何遍历树以找到具有我正在寻找的角色的节点。在搜索树时,我需要使用1和0(0左1右)保留一条路径到我正在寻找的节点。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

很长一段时间以来,我写了一个霍夫曼引擎,但我会试一试。

伪代码。

假设你的霍夫曼树节点看起来像这样

class HuffNode
{
...
char ch;
long huffCode; //initialized to zero initially
HuffNode left,right;
}

所以这里的递归函数(将其转换为迭代应该很容易)

void buildCodes(HuffNode currentNode, long currentCode)
{
currentNode->huffCode =  currentCode;
if(currentNode->left != null) buildCodes(currentNode->left, currentCode << 1);
if(currentNode->right != null) buildCodes(currentNode->right, (currentCode << 1) | 1);
}

这样称呼

buildCodes(rootHuffNode,0);