void decode(char *code, HuffmanNode *root, char *result) { int len = strlen(code); HuffmanNode *p = root; int pos = 0; for (int i = 0; i < len; i++) { if (code[i] == '0') { p = p->left; } else { p = p->right; } if (p->left == NULL && p->right == NULL) { result[pos++] = p->ch; p = root; } } result[pos] = '\0'; }
时间: 2024-02-14 19:09:37 浏览: 52
这段代码是用于对哈夫曼编码进行解码的函数,它的输入参数包括哈夫曼编码字符串、哈夫曼树的根节点以及解码结果字符串。该函数会遍历编码字符串中的每个字符,如果是0,则移动到当前节点的左子节点;如果是1,则移动到当前节点的右子节点。当移动到叶子节点时,即找到了对应的字符,将其添加到解码结果字符串中,并将当前节点重置为根节点。最终返回的解码结果字符串即为哈夫曼编码对应的原始字符串。
阅读全文