哈夫曼编码python算法实现(代码版)

一、问题:      

        请使用哈夫曼编码方法对给定的字符串,进行编码,以满足发送的编码总长度最小,且方便译码。“AABBCCDDEEABCDDCDBAEEAAA”

二、过程:

import heapq
import collections

class Node:
    def __init__(self, char, freq):
        self.char = char
        self.freq = freq
        self.left = None
        self.right = None

    def __lt__(self, other):
        return self.freq < other.freq

def build_frequency_table(text):
    return collections.Counter(text)

def build_huffman_tree(frequencies):
    priority_queue = [Node(char, freq) for char, freq in frequencies.items()]
    heapq.heapify(priority_queue)

    while len(priority_queue) > 1:
        left = heapq.heappop(priority_queue)
        right = heapq.heappop(priority_queue)
        merged = Node(None, left.freq + right.freq)
        merged.left = left
        merged.right = right
        heapq.heappush(priority_q

相关推荐

  1. 编码python算法实现代码

    2024-05-09 21:10:04       36 阅读
  2. go实现编码

    2024-05-09 21:10:04       44 阅读
  3. PTA:编码

    2024-05-09 21:10:04       65 阅读
  4. nginx中的编码算法

    2024-05-09 21:10:04       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-09 21:10:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-09 21:10:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-09 21:10:04       82 阅读
  4. Python语言-面向对象

    2024-05-09 21:10:04       91 阅读

热门阅读

  1. 鸿蒙原生应用元服务开发-Web上传文件

    2024-05-09 21:10:04       31 阅读
  2. 2023-2024年电力行业报告合集(精选69份)

    2024-05-09 21:10:04       42 阅读
  3. linux不同引号的含义(随手记)

    2024-05-09 21:10:04       33 阅读
  4. 单选按钮选中后取消

    2024-05-09 21:10:04       37 阅读
  5. 解析React Hooks的工作原理与影响

    2024-05-09 21:10:04       34 阅读
  6. 【js开发记录笔记】js开发记录笔记

    2024-05-09 21:10:04       27 阅读