6.8.2 最优树的构造方法

  赫夫曼最早给出了一个构造最优树的带有一般规律的算法,俗称赫夫曼算法。现以最优二叉树为例叙述如下:

  (1) 根据给定的 n 个权值{,,…},构成 n 棵二叉树的集合 F={,,…,},其中每棵二叉树 中只有一个带权为 的根结点,其左右子树均空。

  (2) 在 F 中选取两棵根结点的权值最小的树作为左右子树,构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左、右子树上根结点的权值之和。

  (3) 在 F 中删除这两棵树,同时将新得到的二叉树加入 F 中。

  重复(2)和(3),直到 F 只含一棵树为止。这棵树便是所求的赫夫曼树。
 

  例如,对5个权值 {5,6,2,9,7} 构造最优二叉树的过程如动画所示。动画