数据结构哈夫曼树代码
时间: 2023-11-16 19:02:15 浏览: 107
以下是一个构建哈夫曼树并生成哈夫曼编码的Python代码示例:
```python
# 定义哈夫曼树节点类
class Node:
def __init__(self, value, weight):
self.value = value
self.weight = weight
self.left = None
self.right = None
# 构建哈夫曼树
def build_huffman_tree(data):
nodes = [Node(value, weight) for value, weight in data.items()]
while len(nodes) > 1:
nodes = sorted(nodes, key=lambda x: x.weight)
left_node = nodes.pop(0)
right_node = nodes.pop(0)
parent_node = Node(None, left_node.weight + right_node.weight)
parent_node.left = left_node
parent_node.right = right_node
nodes.append(parent_node)
return nodes[0]
# 生成哈夫曼编码
def generate_huffman_code(root, prefix="", code={}):
if root is None:
return
if root.value is not None:
code[root.value] = prefix
generate_huffman_code(root.left, prefix + "0", code)
generate_huffman_code(root.right, prefix + "1", code)
return code
```
以上代码中,`build_huffman_tree`函数接收一个字典类型的数据,其中键为节点的值,值为节点的权重,返回构建好的哈夫曼树的根节点。`generate_huffman_code`函数接收哈夫曼树的根节点,返回一个字典类型的编码表,其中键为节点的值,值为节点的哈夫曼编码。
阅读全文