C
解析:假设有n个权值{w1,w2,…,wn),构造一棵有n个叶子结点的二叉树,则称带权路径长度WPL最小的二叉树为最优二叉树,亦称哈夫曼树。值得注意的是,最优二叉树的形态不唯一,但是其WPL值是唯一确定的。这好比一个班里,张三、李四和王五体型各异但身高一样,而且是最高的,显然最高的身高值只有一个。用哈夫曼算法构造出来的哈夫曼树一定是最优二叉树,定性地说,在哈夫曼算法中,每次构造新树时都是将权值最小的树尽量放在离根最远的地方,而将权值大的尽量放在离根近的地方,从而使得WPL最小。因此,哈夫曼树一定是最优二叉树。值得特别注意的是,哈夫曼算法可以确保构造出来的树是最优二叉树,但是最优二叉树并不一定非得用哈夫曼算法来构造。例如,给定权值{2,3,4,7,8,9},可以构造出两棵最优二叉树T1、T2,如图3-72所示。显然它们的WPL都是80,所以T1、T2都是是最优二叉树。T1是用哈夫曼算法构造出来的,但T2却不是用哈夫曼算法构造出来的,而是用上文中提及的构造哈夫曼树最容易犯的错误想法构造出来的一棵树。从上面的例子可以看出,哈夫曼算法只是构造最优二叉树的“充分条件”,而不是“必要条件”。至于为什么将哈夫曼树称为最优二叉树,原因可能是由于哈夫曼最早给出了带有一般规律的构造最优二叉树的哈夫曼算法,为了纪念他,就用哈夫曼树来称呼所有的最优二叉树。