这段代码是用来构建哈夫曼树并求出哈夫曼编码的。

第一部分是用来计算总共有多少个非零频率的字符,即n的值。

第二部分是根据哈夫曼树的性质,通过循环找出权值最小的两个结点,然后将它们合并成一个新的结点,作为哈夫曼树的一个新的结点。这个过程一直进行到最后只剩下一个根结点。在这个过程中,通过设置parent、lch和rch来构建哈夫曼树的结构。

第三部分是用来求出每个字符的哈夫曼编码。对于每个字符,从它的父结点开始,不断向上找到根结点,根据是左子树还是右子树来确定编码的0还是1。然后将编码保存在对应的header[i].bits中。

总结起来,这段代码就是通过计算频率,构建哈夫曼树,然后根据哈夫曼树求出每个字符的编码。

构建哈夫曼树	n = 0;	for i = 0; i MAX; i++ 		if headericount == 0			continue;		n++;		m = 2 n - 1;	for i = n; i m; i++			int min1 = 9999999;最小权值初值		for j = 0; j i; j++ 			if headerjparent != -1				continu

原文地址: https://www.cveoy.top/t/topic/hNKh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录