哈夫曼树(Huffman Tree)是一种特殊的二叉树,其特点是带权路径长度(Weighted Path Length, WPL)最短。带权路径长度是指树中所有叶子节点的权值与其到根节点的路径长度之积之和。具体计算公式如下:
\[ WPL = (w_1 \times L_1) + (w_2 \times L_2) + \ldots + (w_n \times L_n) \]
其中,\( w_i \) 是第 \( i \) 个叶子节点的权值,\( L_i \) 是从根节点到第 \( i \) 个叶子节点的路径长度。若根节点位于第一层,则根节点到第 \( i \) 层节点的路径长度为 \( i-1 \)。
示例
假设有两个权值集合:
\( w_1 = 10 \)
\( w_2 = 20 \)
\( w_3 = 30 \)
构造哈夫曼树后,其带权路径长度(WPL)计算如下:
节点 10 的路径长度为 1,带权路径长度为 \( 10 \times 1 = 10 \)
节点 20 的路径长度为 2,带权路径长度为 \( 20 \times 2 = 40 \)
节点 30 的路径长度为 3,带权路径长度为 \( 30 \times 3 = 90 \)
因此,这棵哈夫曼树的带权路径长度 \( WPL \) 为:
\[ WPL = 10 + 40 + 90 = 140 \]
结论
哈夫曼树的带权路径长度是其所有叶子节点的权值与其到根节点的路径长度乘积之和,这一特性使得哈夫曼树在数据压缩等应用中具有显著优势,因为它能够最小化平均编码长度,从而提高压缩效率。