Input: a pointer to the decoding tree root z & received Huffman encoded binary string i • Output: Huffman decoded string
时间: 2024-05-03 09:19:27 浏览: 63
以下是一个 Huffman 解码的示例代码,它接受一个指向 Huffman 树根节点的指针和一个 Huffman 编码后的二进制字符串,并输出解码后的字符串。
```python
class Node:
def __init__(self, freq, char=None, left=None, right=None):
self.freq = freq
self.char = char
self.left = left
self.right = right
def huffman_decode(root, s):
res = ''
cur_node = root
for c in s:
if c == '0':
cur_node = cur_node.left
else:
cur_node = cur_node.right
if cur_node.char is not None:
res += cur_node.char
cur_node = root
return res
```
这里假设 Huffman 树的节点结构是 `Node(freq, char, left, right)`,其中 `freq` 是节点的频率,`char` 是节点对应的字符(如果是叶子节点),`left` 和 `right` 分别是左右子节点。函数 `huffman_decode` 接受两个参数,分别是 Huffman 树的根节点指针和编码后的二进制字符串 `s`。在函数中,我们从根节点开始遍历 Huffman 树,如果当前字符为 `'0'`,则向左子节点移动,否则向右子节点移动。当遇到叶子节点时,将对应的字符加入结果字符串中,并重新回到根节点。最终返回解码后的字符串。
阅读全文