假设用于通讯的电文仅由6个字母A,B,C,D,E,F组成,各个字母在电文中出现的频率分别为:6,3,12,10,7,5,试为这6个字母设计哈夫曼树。(构建新二叉树时,要求新二叉树的左子树根的权值小于等于右子树根的权值。)

假设用于通讯的电文仅由6个字母A,B,C,D,E,F组成,各个字母在电文中出现的频率分别为:6,3,12,10,7,5,试为这6个字母设计哈夫曼树。(构建新二叉树时,要求新二叉树的左子树根的权值小于等于右子树根的权值。)


【正确答案】:



【题目解析】:

给定一组值p1…,pk,如何构造一棵有k个叶子且分别以这些值为权的判定树,使得其平均比较次数最小。满足上述条件的判定树称为哈夫曼树。哈夫曼率先给出了一个求哈夫曼树的简单而有效的方法,称为哈夫曼算法。

(1)由给定的值{p1,…,pk}构造森林F= {T1,…,Tk},其中每个Ti为一棵只有根结点且其权为pi的二叉树。
(2)从F中选取根结点的权最小的两棵二叉树Ti和Tj,构造一棵分别以Ti和Tj为左、右子树的新的二叉树Th,置Th根结点的权为Ti和Tj根结点的权值之和
(3)从F中删去Ti、Tj,并将Th加入F。若F中仍多于一棵二叉树,则返回(2),直到F中只含一棵二叉树为止,这棵二叉树就是哈夫曼树。


Top