哈夫曼树的构造方法?
的有关信息介绍如下:问题补充说明:题目如下我按照如下算法构造哈夫曼树如下但是网上答案如下:请问我做对了吗?如果不对请告知我正确的构造哈夫曼树的方法。谢谢。
哈夫曼树构造方法:
假设有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