关于建立哈夫曼树
程序代码:
struct huffmanTree { long count;//计数,实际为树中的权值 int parent;//父节点 int leftChild, rightChild;//左、右孩子 std::string huffmanString;//哈夫曼编码 };
上面是 哈夫曼树的结构体定义
建立两个数组
huffmanTree arr1[32]; huffmanTree arr2[63];//从 arr1 中读取元素并且建立树,其中父亲节点的哈夫曼编码为"NO_VALUE",元素最多为 arr1 数组中的 (元素个数 * 2 - 1)
当读取完 arr1 中的所有元素的时候,arr2 需要处理哈夫曼编码值为 "NO_VALUE" 并且没有父亲节点的元素,直到 arr2 中只剩下一个父亲节点没有的元素,也就是哈夫曼树中最顶端的元素
这个时候应该选取两个 count 最小的元素相加作为这两个元素的父亲节点,还是只需要选择最前面两个没有父亲节点并且哈夫曼编码为 "NO_VALUE" 的 count 值相加作为父亲节点呢?
或者说根本没有处理这些元素的必要,直接生成哈夫曼编码即可呢?