数据结构构建哈夫曼树
时间: 2023-11-26 14:48:43 浏览: 86
数据结构输入字符串构建哈夫曼树
5星 · 资源好评率100%
哈夫曼树是一种二叉树,它的叶子节点代表着一组数据,而非叶子节点代表着数据的组合。哈夫曼树的构建是基于数据的出现频率来进行的,出现频率高的数据在哈夫曼树中的深度较浅,而出现频率低的数据在哈夫曼树中的深度较深。因此,哈夫曼树可以用来实现数据的压缩和加密。
哈夫曼树的构建步骤如下:
1. 将数据按照出现频率从小到大排序。
2. 选取出现频率最小的两个数据,构建一个新的二叉树,其中这两个数据分别作为左右子树的叶子节点,并将这个新的二叉树的根节点的权值设置为这两个数据的权值之和。
3. 将这个新的二叉树插入到已有的二叉树集合中,保持集合按照权值从小到大排序。
4. 重复步骤2和步骤3,直到所有的数据都被构建成了二叉树。
5. 最后得到的二叉树就是哈夫曼树。
下面是一个Python实现的例子:
```python
class Node:
def __init__(self, value, freq):
self.value = value
self.freq = freq
self.left = None
self.right = None
def huffman_tree(data):
nodes = [Node(value, freq) for value, freq in data.items()]
while len(nodes) > 1:
nodes = sorted(nodes, key=lambda x: x.freq)
left_node = nodes.pop(0)
right_node = nodes.pop(0)
new_node = Node(None, left_node.freq + right_node.freq)
new_node.left = left_node
new_node.right = right_node
nodes.append(new_node)
return nodes[0]
data = {'a': 5, 'b': 9, 'c': 12, 'd': 13, 'e': 16, 'f': 45}
root = huffman_tree(data)
```
阅读全文