哈夫曼树浅谈
哈夫曼树浅谈
1.定义
结点的权:有某种现实含义的数值(如:表示结点的重要性等
结点的带权路径长度:从树的 根结点 到该结点的路径长度(经过的边数)与该结点上权值的乘积
树的带权路径长度:树中所有 叶结点 的带权路径长度之和( WPL, Weighted PathLength )
在含有 n 个带权叶结点的二叉树中,其中带权路径长度( WPL )最小的 二叉树 称为哈夫曼树,也称最优二叉树
2.构造
1 | 哈夫曼树权值越大的叶子离根越近 |
给定 n 个权值分别为 w1, w2,…, wn 的结点,构造哈夫曼树的算法描述如下:
将这 n 个结点分别作为 n 棵仅含一个结点的二叉树,构成森林 F 。
构造一个新结点,从 F 中选取两棵根结点权值最小的树作为新结点的左、右子树,并且将新结点的权值置为左、右子树上根结点的权值之和。
从 F 中删除刚才选出的两棵树,同时将新得到的树加入F 中。
重复步骤2和3,直至 F 中只剩下一棵树为止。
代码实现
1 |
|
例题
1 | P2556 |
评论
TwikooUtterances