哈夫曼树编码使用优先队列
时间: 2023-11-24 21:05:53 浏览: 37
是的,哈夫曼树编码使用优先队列。在构造哈夫曼树时,需要不断地选取权值最小的两个节点***可以保证每次合并的两个节点都是当前权值最小的节点,从而得到唯一的哈夫曼树。\```pyth\impor heapq\n\ss N\ def __ini__(self, valu, char=N):\ self.valu = valu\ self.char = char\ self.lef = N\ self.righ = N\n\ def ____(self, other):\ retur self.valu < other.valu\n\f huffm_encoding(s):\ # 统计字符出现次数\ freq = {}\ for i s\ freq[] = freq.g(, ) + 1\n\ # 构造叶子节点\ nodes = [N(freq[], ) for i freq]\n\ # 构造哈夫曼树\ heapq.heapify(nodes)\ whi (nodes) > 1\ lef = heapq.hppp(nodes)\ righ = heapq.hppp(nodes)\ par = N(lef.valu + righ.valu)\ par.lef = lef\ par.righ = righ\ heapq.hppush(nodes, par)\n\ # 构造编码表\ codes = {}\ def dfs(, ):\ if .char\ codes[.char] = \ els\ dfs(.lef, + '')\ dfs(.righ, + '1')\ dfs(nodes[], '')\n\ # 输出结果\ pri(sum(freq[] * (s[]) for i freq))\ for i sor(s):\ pri(, codes[], sep='')\n\s = 'bbbb'\huffm_encoding(s)\```\
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)