我试图解码格式的哈夫曼树:我使用的是实施这里找到解码哈夫曼树
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