python建哈夫曼树
时间: 2023-11-12 07:59:45 浏览: 85
好的,建立哈夫曼树的过程如下:
1. 统计每个字符出现的频率,并将其存储在一个字典中。
2. 将每个字符及其频率作为一个节点,构建一个森林。
3. 从森林中选出两个权值最小的节点作为左右子节点,构建一棵新的二叉树,其根节点的权值为左右子节点权值之和。
4. 将新构建的二叉树插入到森林中,并删除原来的两个节点。
5. 重复步骤3和4,直到森林中只剩下一棵树,即为哈夫曼树。
下面是 Python 代码实现:
```python
class Node:
def __init__(self, freq, char=None):
self.freq = freq
self.char = char
self.left = None
self.right = None
def build_huffman_tree(freq_dict):
nodes = [Node(freq, char) for char, freq in freq_dict.items()]
while len(nodes) > 1:
nodes.sort(key=lambda x: x.freq)
left_node = nodes.pop(0)
right_node = nodes.pop(0)
new_node = Node(left_node.freq + right_node.freq)
new_node.left = left_node
new_node.right = right_node
nodes.append(new_node)
return nodes[0]
```
其中 `freq_dict` 是一个字典,存储了每个字符出现的频率。函数返回的是哈夫曼树的根节点。
阅读全文