最优二叉树、哈夫曼树、霍夫曼树

1、树的带权路径长度:为树中所有叶子结点的带权路径长度之和。通常记作 “WPL”

 WPL = 7 * 1 + 5 * 2 + 2 * 3 + 4 * 3

2、最优二叉树

当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”

3、哈夫曼树就是我们平时说的最优二叉树。

4、路径长度:从树中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上的分支数目称为路径长度。

5、树的带权路径长度计算WPL

在这里插入图片描述 
节点的带权路径长度为根节点到该节点路径长度与该节点的权的乘积。

树的带权路径长度为各叶子节点的带权路径长度之和。
树a的WPL=1x5+2x15+3x40+4x30+4x10=315
树b的WPL=3x5+3x15+2x40+2x30+2x10=220
树的WPL越小,那么树就越优。

6、构造哈夫曼树 

由权值集合{8,5,6,2}构造的哈夫曼树(最优二叉树)为

7、构造哈夫曼树的步骤

假定我们按照A5、B15、C40、D30、E10生成一棵哈夫曼树。
按照如下步骤操作:

1、将所有权重节点按照权重由小到大进行排序,即:A5,E10,B15,D30,C40
2、将最左的两个节点按照左小右大作为新节点N1的左右两个子节点。N1的权重=5+10=15。

在这里插入图片描述

3、将N1替换序列的A和E并加入。重复2步骤,将N1和B作为新节点N2的两个子节点。N2的权重=15+15=30。

在这里插入图片描述

4、然后继续重复2步骤,将N2替换N1和B加入到序列中,并将N2与D作为新节点N3的两个子节点。N3的权重=30+30=60。

在这里插入图片描述

5、然后继续重复2步骤,将N3替换N2和D并加入到序列。将N3和E作为新节点R的两个子节点。因为N3的权重为60,C的权重为40,所以C作为R的左子节点,N3作为右子节点。并且R已经是根节点了,所以最终的哈夫曼树就如下图:

在这里插入图片描述

该树的WPL=1x40+2x30+3x15+4x10+4x5=205
比前面的树b的WPL=225还要少15,所以该树就是最优的哈夫曼树了。

6、以下关于Huffman (哈夫曼)树的叙述中,错误的是(  D)。

问题1选项
A.权值越大的叶子离根结点越近
B.Huffman(哈夫曼)树中不存在只有一个子树的结点
C.Huffman(哈夫曼)树中的结点总数一定为奇数
D.权值相同的结点到树根的路径长度一定相同

哈夫曼节点总数一定是奇数。 除叶子节点外,其他节点都有左右子节点,再加上根节点

,权值相同的结点可能会因为构造的形态不同,导致构造结果不一样,权值不一样,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值