Huffman树
来源:互联网 发布:株洲网络危机公关公司 编辑:程序博客网 时间:2024/05/29 23:48
演示网站:
http://huffman.ooz.ie/
class MinPri: def __init__(self): self.heaplist = [] def Dequeue(self): minObj = self.heaplist[0] idxMin = 0 for i in self.heaplist: if i.comFun(minObj) < 0: minObj = i idxMin = self.heaplist.index(i) del self.heaplist[idxMin] return minObj def Insert(self,objectIn): self.heaplist.append(objectIn) def Empty(self): return len(self.heaplist) == 0 class HuffmanTree: def __init__(self,freq,char): self.key = freq self.char = char self.left = 0 self.right = 0 def comFun(self,OtherNode): if self.key > OtherNode.key: return 1 elif self.key == OtherNode.key: return 0 else: return -1 def MakeHuffmanTree(charList,freList): num = len(charList) minQ = MinPri() for i in range(0,num): node = HuffmanTree(freList[i],charList[i]) minQ.Insert(node) for i in range(0,num - 1): x = minQ.Dequeue() y = minQ.Dequeue() z = HuffmanTree(x.key + y.key , 0) z.left = x z.right = y minQ.Insert(z) return minQ.Dequeue()def PrintHuffmanTree(ht): code = [] Traval(code, ht) def Traval(code, root, dir='3'): if not dir == '3': code.append(dir) if not root.char == 0: print root.char, " : ", "".join(code) else: Traval(code, root.left, '0') code.pop() Traval(code, root.right, '1') code.pop() if __name__ == '__main__': charList = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] freqList = [ 2, 5, 9, 3, 40, 6, 10 ] TreeTop = MakeHuffmanTree(charList, freqList) PrintHuffmanTree(TreeTop)
0 0
- Huffman树&&Huffman编码
- Huffman树
- Huffman 树
- huffman树
- huffman 树
- Huffman树
- Huffman树
- Huffman树
- Huffman树
- Huffman树
- Huffman树
- Huffman树
- Huffman树
- Huffman树
- huffman 树
- Huffman树
- Huffman树
- Huffman树
- 被诅咒的程序员的七宗罪
- USB学习笔记3:端点与传输模式
- 大型网站后台架构的web server与缓存
- 吐血整理 Delphi系列书籍 118本(全)
- 关于OpenStack孵化项目trove(DBaaS)之我见
- Huffman树
- JQuery 选择器
- shell常用命令
- linux守护进程原理及创建详解
- Linux通过脚本实现远程自动备份
- 到复选框的list
- 二叉树两结点的最低共同父结点
- Length of Last Word
- Bluetooth:电脑无法给手机发文件