哈夫曼树,即最优树,是带权路径长度最短的树。有着广泛的应用。在解决某些判定问题上,及字符编码上,有着重要的价值。
构造一棵哈夫曼树,哈夫曼最早给出如下算法,称为哈夫曼算法:
( 1 )根据给定的 N 个权值 W1 , W2 , W3 ,……, Wn ,构成 N 棵二叉树的集合 F= T1 , T2 , T3 ,……, Tn ,其中每棵二叉树 T1 只有一个带权为 WI 的根结点,其左右子树均空。
( 2 )在 F 中选出两棵根结点权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的权值为其左右子树上的根结点的权值之和。
( 3 )在 F 中删除这两棵树,同时将新得到的加到 F 之中。重复( 2 )和( 3 ),直至 F 中只剩一个为止。