假设某个电文由5个字母a, b, c,d,e组成,每个字母在电文中出现的次数为7, 9, 5, 6, 12。
试为这5个字母设计哈夫曼树。(构建新二叉树时,要求新二叉树的左子树根的权值小于等于右子树根的权值。)
【正确答案】:
【题目解析】:
哈夫曼算法非形式的描述如下:
(1)由给定的值{7, 9, 5, 6, 12}构造森林F= {7, 9, 5, 6, 12},其中每个树为一棵只有根结点且其权为给定值的二叉树。
(2)从F中选取根结点的权最小的两棵二叉树5和6,构造一棵分别以5和6为左、右子树的新的二叉树,且置该二叉树的根结点的权5+6=11。
(3)从F中删去5、6,并将11加入F。此时F= {7, 9, 11, 12}。此时F中仍多于一棵二叉树,则返回(2),F的变化过程为{16, 11, 12},{16, 23},{39}。直到F中只含一棵二叉树为止,这棵二叉树就是哈夫曼树。
且题目要求新二叉树的左子树根的权值小于等于右子树根的权值,故得出如图答案。