构造哈夫曼树
哈弗曼树中没有度为一的节点,是标准的二叉树,所以有n个叶子结点时,需要一个长度为2n-1的一维数组存储哈弗曼树的结点。
(1)、n个叶子节点只有weight权值,处理非叶子节点,从ht[i](ht[1]~ht[n-1])中找到ht[i].weight最小的两个节点ht[s1]和ht[s2],这就是Select(int n,int &s1,int & s2,HTNode *ht)函数完成的功能。
(2)、调用select函数,并将ht[s1]和ht[s2]作为ht[l]的左右子树,即ht[s1]和ht[s2]双亲节点为ht[l],新的根节点的权值为其左右子树权值之和, ht[l].weight=ht[s1].weight+ht[s2].weight
标签:
树
节点
上传时间:
2016-06-13
上传用户:ztj182002