基本概念
哈夫曼树又叫最优二叉树,它是由 n 个带权叶子结点构成的所有二叉树中带权路径长度 WPL 最短的二叉树。
-
路径:指从一个结点到另一个结点之间的分支序列。
-
路径长度:指从一个结点到另一个结点所经过的分支数目。
-
树的路径长度:树中所有叶子结点的路径长度之和。
-
权:给树的每个结点赋予一个具有某种实际意义的实数,我们称该实数为这个结点的权。
-
带权路径长度:在树形结构中,我们把从树根到某一结点的路径长度与该结点的权的乘积,叫做该结点的带权路径长度。
-
树的带权路径长度:树中所有叶子结点的带权路径长度之和。
如图所示,叶子结点 A、B、C、D 的权值分别为 7、5、2、4,因为 A 到根结点的分支数目为2,所以 A 的路径长度为2,A 的带权路径长度为 5*2=10、3*2=6、4*2=8,故这棵二叉树的带权路径长度为 WPL=14+10+6+8=38
哈夫曼树的构造方法
给定 n 个权值,用这 n 个权值来构造赫夫曼树的算法描述如下:
(1)将这 n 个权值分别看作只有根结点的 n 棵二叉树,这些二叉树构成的集合记为 F
(2)在森林 F 中选择两棵根结点权值最小的二叉树&#x