python-哈夫曼树

 1  #!/usr/bin/python
 2 #coding=utf-8
 3 #哈夫曼树创建
 4 
 5 class Node():
 6     def __init__(self,value,left=None,right=None):
 7         self.value=value
 8         self.left=left
 9         self.right=right
10 class Halfman():
11     def init(self,k):
12         k.sort()
13        # key=Node(k[0])
14         self.root=Node(k[0])
15         if len(k)==len(set(k)):  #无重复项判定
16             for i in range(1,len(k)):
17                 node=Node(k[i])
18                 if i==1: 
19                     max=k[i]*(len(k)-i)+self.root.value*(len(k)-1)
20                 else:
21                     max=k[i]*(len(k)-i)+self.root.value
22                 root=Node(max,self.root,node)
23                 self.root=root
24             return self.root
25     def pre(self,root):
26         if root==None:return
27         print root.value
28         self.pre(root.left)
29         self.pre(root.right)
30 
31 k=[2,8,5,6,4,7,9,1,3]
32 tree=Halfman()
33 a=tree.init([2,8,5,6,4,7,9,1,3])
34 
35 tree.pre(a)
36 
37 print '*'*40
38 
39 print a.value
40 print a.left.value
41 print a.right.value

 

转载于:https://www.cnblogs.com/chengyunshen/p/7195880.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值