哈夫曼树与编码译码实现(二)

2015-02-15 13:01:43 · 作者: · 浏览: 134
, strLen;
? ? for (int i = 0; i < HC.size(); ++i)
? ? {
? ? ? ? p = HT.size() - 1;? ? ? ? ? ? ? ? ? ? ? ? //回到根结点
? ? ? ? codeTmp = HC[i];
? ? ? ? strLen = codeTmp.size();


? ? ? ? for (int j = 0; j < strLen; ++j)
? ? ? ? {
? ? ? ? ? ? if (codeTmp[j] == '0')
? ? ? ? ? ? {
? ? ? ? ? ? ? ? p = HT[p].lchild;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? p = HT[p].rchild;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? SrcCode.push_back(HT[p].weight);? ?
? ? }
}? ?



void HuffTree::HuffmanCode(vector &HT, vector &HC, const vector &wgh)
{
? ? if (wgh.empty())
? ? {
? ? ? ? return;
? ? }
? ? InitHuffTree(HT, wgh);


? ? BuildHuffTree(HT, wgh);


? ? HuffCodeing(HT, HC, wgh);
}