← 返回题库
中级

哈夫曼编码-生成编码表

未完成
中级参考 代码结构已给出,请填写 ____ 处
def get_huffman_codes(____):
    codes = {}
    def traverse(____):
        if node is None:
            return
        if node.char is not None:
            codes[node.char] = code
            return
        traverse(____)
        traverse(____)
    traverse(____)
    return codes

示例

输入
import heapq
class N:
    def __init__(self, c, f): self.char=c; self.freq=f; self.left=self.right=None
    def __lt__(self, o): return self.freq < o.freq
freq = {'a': 5, 'b': 9, 'c': 12, 'd': 13, 'e': 16, 'f': 45}
heap = [N(c, f) for c, f in freq.items()]; heapq.heapify(heap)
while len(heap) > 1:
    l = heapq.heappop(heap); r = heapq.heappop(heap)
    p = N(None, l.freq + r.freq); p.left = l; p.right = r
    heapq.heappush(heap, p)
root = heap[0]
print(get_huffman_codes(root)['f'])
期望输出
0
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码