0

私はハフマン木に取り組んでおり、探している文字を持つノードを見つけるために木をたどる方法を見つけようとしています。ツリーを検索している間、1 と 0 (0 左 1 右) を使用して探しているノードへのパスの文字列を保持する必要があります。これどうやってするの?

4

1 に答える 1

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);
于 2010-07-23T04:37:23.117 に答える