list2=[] list3=[] class Node(object): def__init__(self,name=None,value=None): self._name=name self._value = value self._left=None self._right = None class HuffmanTree(object): def __init__(self, char_weights): self.a=[Node(part[0],part[1])for part in char_weights] while len(self.a)!=1: self.a.sort(key=lambda node:node._value,reverse=True) c=Node(value=(self.a[-1]._value+self.a[-2]._value)) c._left=self.a.pop(-1) c._right=self.a.pop(-1) self.a.append(c) self.root=self.a[0] self.b=range(10) def pre(self,tree,length): node=tree if(not node): return elif node._name: list1='' for i in range(length): list1+=str(self.b[i]) list2.append(node._name) list3.append(list1) return self.b[length]=0 self.pre(node._left,length+1) self.b[length]=1 self.pre(node._right,length+1) def get_code(self): self.pre(self.root,0) if __name__=='__main__': dic=[] i = raw_input() for j in set(i): dic.append((j,i.count(j))) char_weights=dic tree = HuffmanTree(char_weights) tree.get_code() r='' for l in i: for m in range(len(list2)): if l==list2[m]: r+=str(list3[m]) print r # # abbcccdddd # 1101111111010100000 测试用例 为什么和我的不一样,求大佬告知!
点赞 3

相关推荐

09-17 19:25
已编辑
太原理工大学 游戏测试
叁六玖:公司名发我,我要这个HR带我打瓦
我的秋招日记
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务