Quantum Encoding Visualization Module
正在扫描节点频率... 准备执行贪心合并策略。
import heapq def build_huffman(freqs): # 1. 初始化最小堆 heap = [[f, [c, ""]] for c, f in freqs.items()] heapq.heapify(heap) # 2. 核心:贪心合并 while len(heap) > 1: # 弹出当前最小的两个 lo = heapq.heappop(heap) hi = heapq.heappop(heap) # 分配路径权值 for p in lo[1:]: p[1] = '0' + p[1] for p in hi[1:]: p[1] = '1' + p[1] # 合并后再推入堆中循环比较 heapq.heappush(heap, [lo[0]+hi[0]]+lo[1:]+hi[1:]) return heapq.heappop(heap)
function buildHuffman(data) { // 1. 转换为节点对象列表 let nodes = data.map(d => ({...d})); while (nodes.length > 1) { // 2. 贪心:按频率升序排列 nodes.sort((a, b) => a.freq - b.freq); let left = nodes.shift(); let right = nodes.shift(); // 3. 合并产生父节点 let parent = { freq: left.freq + right.freq, left: left, right: right }; nodes.push(parent); } return nodes[0]; }