如何构造哈夫曼树?借助口诀+两个特点

贪心算法:先挑小的叶子来构造,大的留到最后就能离根近一些

哈夫曼算法的步骤:根据n个给定的权值,构造有n个树的森林,n个树都只有1个根结点,其权值给定(森林中有几个树?给了几个权值就几个树,每个树都只有1个结点)

重复2,3步骤

直到只剩下一棵树结束

口诀:

例子:

1.构造森林全是根:一开始就用4个结点构造了4棵二叉树,构成一个森林(有几个叶子结点就有几棵树)

2.选用两小造新树:选2,4为他们两个增加一个双亲结点作为根,这个新树的根结点的权值是两个根结点权值的和,2+4=6

3.删除两小添新人:现在变成3棵树了,选5,6造一个新树,添加一个根结点,权值5+6=11

4.重复2,3剩单根:

错解:

 

我做错了

观察:

4个叶子结点构造新树,新树的根结点都是度为2的,它必有左右子树,因为我们选用了两小,一个做左子树,一个做右子树,所以新添加的结点都是度为2的,我们一开始的结点都是度为0的

包含n个叶子结点总共有多少个结点?2n-1

两两合并产生一个新的结点,如果有n个,一定会合并n-1次,最后才剩下一棵树,这n-1次合并就会产生n-1个结点,这n-1个结点都是度为2的结点,而度为0的结点是n个

再看一个例子:

总结:

1.

2.

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值