继续前面章节的介绍
为什么要使用两个结构数组?
最初,struct array pix_freq以及 struct array huffcodes将仅包含 Huffman Tree 中所有叶节点的信息。
结构数组pix_freq将用于存储霍夫曼树的所有节点,数组huffcodes将用作更新(和排序)树。
请记住,每次迭代中只会对huffcodes进行排序,而不是pix_freq
通过组合最低频率的两个节点创建的新节点,在每次迭代中,将附加到pix_freq数组的末尾,也附加到huffcodes数组。
但是数组huffcodes在加入新节点后,会按照出现的概率重新排序。
数组pix_freq中新节点的位置将存储在struct huffcode的arrloc字段中。将指针分配给新节点的左右子节点时将使用arrloc字段。
第 4 步继续……
现在,如果有N 个叶子节点,则整个哈夫曼树的节点总数将等于2N-1
并且在两个节点合并并被新的父节点替换后,节点的数量在每次迭代中减少1 。因此,数组