您的位置首页百科问答

哈夫曼树的构造方法?

哈夫曼树的构造方法?

的有关信息介绍如下:

问题补充说明:题目如下我按照如下算法构造哈夫曼树如下但是网上答案如下:请问我做对了吗?如果不对请告知我正确的构造哈夫曼树的方法。谢谢。

哈夫曼树的构造方法?

哈夫曼树构造方法:

假设有n个权值,则构造出的哈夫曼树有n个叶子结点。n个权品值分别设为w1、w2、…、wn,则哈夫曼树的构造规则为:

(1)将w1、w2、…,wn看成是有n棵树的森林(每棵树仅有一个结点);

(2)在森林中选出两行个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;

(3)从森林中删除选取的两棵树,并将新树加入森林;

(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。

 

简单的说,就是选择两个权值最小的节点,构造一棵树,树的根360问答权值是两个权值最小的节点之和制,将新的权值节点放回序列,继续按照上述方法构造,直到只有一棵树为止,这样的树其WPL最小。

追答:这个跟最下层有做简赵号用速几个节点没有关系。比如,有4个权重1 24 5的节点,其构造树的方法,便是先选择两个权重最小的结点构造树,这里是1和2,新的树权重为3

 3

 / \

1 2

序列变为 4 5 3

再选择两个最小权重节点 4和3,构造树

   7

 /  \

 3  4

/\

1 2

序列变为5 7,选择4和7构造树

  12

 /  \

5   7

    / \

   3  4

  / \

 1  2