根据输入的字符串构建霍夫曼树
时间: 2023-10-07 11:09:10 浏览: 87
数据结构输入字符串构建哈夫曼树
5星 · 资源好评率100%
好的,构建霍夫曼树需要以下步骤:
1. 统计每个字符在字符串中出现的次数,将其作为权值。
2. 将每个字符作为一个节点,构建一颗只有叶子节点的二叉树。
3. 将这些节点按照权值从小到大排序,每次取出权值最小的两个节点,将它们的权值加起来构成一个新的节点,并将这个节点插入到原来的节点中,并按照权值从小到大排序。
4. 重复步骤 3,直到最后只剩下一个节点,这个节点就是霍夫曼树的根节点。
以下是一个 Python 代码示例:
```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 build_huffman_tree(s):
freq_dict = {}
for char in s:
freq_dict[char] = freq_dict.get(char, 0) + 1
nodes = []
for char, freq in freq_dict.items():
nodes.append(Node(freq, char))
nodes.sort(key=lambda node: node.freq)
while len(nodes) > 1:
left = nodes.pop(0)
right = nodes.pop(0)
parent = Node(left.freq + right.freq, left=left, right=right)
nodes.append(parent)
nodes.sort(key=lambda node: node.freq)
return nodes[0]
```
这个函数接受一个字符串作为输入,返回构建出来的霍夫曼树的根节点。
阅读全文