我試圖解碼格式的哈夫曼樹:我使用的是實施這裏找到解碼哈夫曼樹
001A1C01E01B1D
:Efficient way of storing Huffman tree編碼在上面的表格樹並對其進行解碼,以及。
這是我實現它:
HuffmanNode* HuffmanTree::decodeTree(string tree, int idx) {
cout << idx << endl;
if (tree[idx] == '1') {
idx += 2;
return new HuffmanNode(tree[idx - 1]);
}
else {
if (idx != tree.length() - 1) {
idx++;
HuffmanNode* leftChild = decodeTree(tree, idx);
idx++;
HuffmanNode* rightChild = decodeTree(tree, idx);
return new HuffmanNode(leftChild, rightChild);
}
else
return new HuffmanNode(tree[idx]);
}
}
我得到一個訪問衝突寫的位置時的功能開,(在 「迴歸新HuffmanNode(樹[IDX - 1]);」),我希望最終的回報會成爲樹的根源,但經過進一步檢查,似乎並非如此。任何人都可以給我一些指點嗎? (沒有雙關語意)
你期待IDX的遞歸調用之間共享?如果是這樣的話,你需要將它作爲參數列表中的參考。你也可以做一些額外的安全檢查(有適當的錯誤)。例如,它會被任何以「1」結尾的字符串絆倒。 – Dave 2015-04-02 19:06:39