数据结构关于哈夫曼树

给定n个权值作为n个叶子节点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的节点离根较近。


要了解哈夫曼树,首先需要了解几个名词概念:
1.节点路径长度:从树中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上的分支数目称作路径长度。
2.树的路径长度:从树根到每一个节点的路径长度之和。
3.节点的带权路径长度:从该节点到树根之间的路径长度与节点上权的乘积。
4.树的带权路径长度:树中所有叶子节点的带权路径长度之和。
5.哈夫曼树(最优二叉树):带权路径长度(WPL)最小的二叉树。

具体构造哈夫曼树的思路如下:

1.根据给定的n个权值{w1,w2,w3......wn}构成n棵二叉树的集合F = {T1,T2,T3...Tn},其中每棵二叉树Ti中只有一个带权为Wi的根节点,其左右子树均为空。
2.在F中选取两棵根节点的权值最小的树作为左右子树构造一棵新的二叉树,新的二叉树的根节点的权值为其左右子树上根节点的权值之和。
3.在F集合中删除这两棵树,同时将2中新生成的二叉树加入到集合F中。
4.重复步骤2和步骤3,直到F集合中只含有一棵树为止,这棵树为哈夫曼树。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值