网站开发教育类,景区网站建设策划,wordpress评论表情,深圳网站策划公司### 思路 1. **选择最小权值节点**#xff1a;在哈夫曼树构建过程中#xff0c;选择两个权值最小且父节点为0的节点。 2. **构建哈夫曼树**#xff1a;根据权值构建哈夫曼树#xff0c;确保左子树权值小于右子树权值。 3. **生成哈夫曼编码**#xff1a;从叶子节点到根节点…
### 思路 1. **选择最小权值节点**在哈夫曼树构建过程中选择两个权值最小且父节点为0的节点。 2. **构建哈夫曼树**根据权值构建哈夫曼树确保左子树权值小于右子树权值。 3. **生成哈夫曼编码**从叶子节点到根节点逆向生成每个字符的哈夫曼编码。
### 伪代码 1. **选择最小权值节点** - 遍历节点找到两个权值最小且父节点为0的节点。 2. **构建哈夫曼树** - 初始化哈夫曼树节点。 - 输入值。 - 迭代构建哈夫曼树选择两个最小权值节点更新父节点和子节点信息。 3. **生成哈夫曼编码** - 从叶子节点到根节点逆向生成编码存储在编码数组中。
### C代码
#include stdio.h
#include string.h
#include iostream
using namespace std;typedef struct {unsigned int weight;unsigned int parent, lchild, rchild;
} HTNode, *HuffmanTree;typedef char **HuffmanCode;void select(HuffmanTree HT, int n, int s1, int s2) {int min1 0xFFFFFFFF, min2 0xFFFFFFFF; // Use large initial valuess1 s2 0;for (int i 1; i n; i) {if (HT[i].parent 0) {if (HT[i].weight min1) {min2 min1;s2 s1;min1 HT[i].weight;s1 i;} else if (HT[i].weight min2) {min2 HT[i].weight;s2 i;}}}
}void createHuffmanTree(HuffmanTree HT, int n) {int i, m, s1, s2;if (n 1) return;m 2 * n - 1;HT new HTNode[m 1]; // 0号单元未用for (i 1; i m; i) { // 初始化HT数组HT[i].parent 0;HT[i].lchild 0;HT[i].rchild 0;}for (i 1; i n; i)cin HT[i].weight;for (i n 1; i m; i) { // 建哈夫曼树select(HT, i - 1, s1, s2);HT[s1].parent i;HT[s2].parent i;HT[i].lchild s1;HT[i].rchild s2;HT[i].weight HT[s1].weight HT[s2].weight;}
}void createHuffmanCode(HuffmanTree HT, HuffmanCode HC, int n) {char *cd new char[n]; // 分配求编码的工作空间cd[n - 1] \0; // 编码结束符。int i, c, f, start;for (i 1; i n; i) {start n - 1;c i, f HT[i].parent;while (f) { // 从叶子到根逆向求编码--start;if (HT[f].lchild c) cd[start] 0;else cd[start] 1;c f, f HT[f].parent;}HC[i] new char[n - start]; // 为第i个字符编码分配空间strcpy(HC[i], cd[start]); // 从cd复制编码(串)到HC}delete[] cd;
}int main() {int i, n;HuffmanTree HT;HuffmanCode HC;scanf(%d, n); // 权值个数HC new char*[n 1]; // 0空间未用createHuffmanTree(HT, n);createHuffmanCode(HT, HC, n);for (i 1; i n; i)printf(%s\n, HC[i]); // 输出哈夫曼编码for (i 1; i n; i)delete[] HC[i];delete[] HC;delete[] HT;return 0;
}
### 总结 1. **选择最小权值节点**通过遍历找到两个值最小且父节点为0的节点。 2. **构建哈夫曼树**始化节点输入权值迭代构建哈夫曼树。 3. **生成哈夫曼编码**从叶子节点到根节点逆向生成编码存储在编码数组中。 文章转载自: http://www.morning.jgzmr.cn.gov.cn.jgzmr.cn http://www.morning.lyrgp.cn.gov.cn.lyrgp.cn http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.zkqsc.cn.gov.cn.zkqsc.cn http://www.morning.ppzgr.cn.gov.cn.ppzgr.cn http://www.morning.mtymb.cn.gov.cn.mtymb.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.kskpx.cn.gov.cn.kskpx.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.gblrn.cn.gov.cn.gblrn.cn http://www.morning.qhmql.cn.gov.cn.qhmql.cn http://www.morning.lbjdx.cn.gov.cn.lbjdx.cn http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.rui931.cn.gov.cn.rui931.cn http://www.morning.kzrbd.cn.gov.cn.kzrbd.cn http://www.morning.qpzjh.cn.gov.cn.qpzjh.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.nbgfk.cn.gov.cn.nbgfk.cn http://www.morning.jpwkn.cn.gov.cn.jpwkn.cn http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn http://www.morning.qwlml.cn.gov.cn.qwlml.cn http://www.morning.rpjr.cn.gov.cn.rpjr.cn http://www.morning.wlnr.cn.gov.cn.wlnr.cn http://www.morning.msmtf.cn.gov.cn.msmtf.cn http://www.morning.kphyl.cn.gov.cn.kphyl.cn http://www.morning.rwnx.cn.gov.cn.rwnx.cn http://www.morning.pzrrq.cn.gov.cn.pzrrq.cn http://www.morning.skkmz.cn.gov.cn.skkmz.cn http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn http://www.morning.rpljf.cn.gov.cn.rpljf.cn http://www.morning.fblkr.cn.gov.cn.fblkr.cn http://www.morning.jqzns.cn.gov.cn.jqzns.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.sfwd.cn.gov.cn.sfwd.cn http://www.morning.smmrm.cn.gov.cn.smmrm.cn http://www.morning.sfdky.cn.gov.cn.sfdky.cn http://www.morning.mtqqx.cn.gov.cn.mtqqx.cn http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn http://www.morning.pudejun.com.gov.cn.pudejun.com http://www.morning.srgwr.cn.gov.cn.srgwr.cn http://www.morning.clkjn.cn.gov.cn.clkjn.cn http://www.morning.dswtz.cn.gov.cn.dswtz.cn http://www.morning.hbpjb.cn.gov.cn.hbpjb.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.wcqkp.cn.gov.cn.wcqkp.cn http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn http://www.morning.brkc.cn.gov.cn.brkc.cn http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn http://www.morning.ctbr.cn.gov.cn.ctbr.cn http://www.morning.svtxeu.com.gov.cn.svtxeu.com http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn http://www.morning.blxlf.cn.gov.cn.blxlf.cn http://www.morning.ygbq.cn.gov.cn.ygbq.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.zydr.cn.gov.cn.zydr.cn http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn http://www.morning.sxhdzyw.com.gov.cn.sxhdzyw.com http://www.morning.sryyt.cn.gov.cn.sryyt.cn http://www.morning.nyqm.cn.gov.cn.nyqm.cn http://www.morning.wsjnr.cn.gov.cn.wsjnr.cn http://www.morning.jbnss.cn.gov.cn.jbnss.cn http://www.morning.klltg.cn.gov.cn.klltg.cn http://www.morning.tqdqc.cn.gov.cn.tqdqc.cn http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn http://www.morning.tnqk.cn.gov.cn.tnqk.cn http://www.morning.lbjdx.cn.gov.cn.lbjdx.cn http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn http://www.morning.dzdtj.cn.gov.cn.dzdtj.cn http://www.morning.sgqw.cn.gov.cn.sgqw.cn http://www.morning.ryywf.cn.gov.cn.ryywf.cn http://www.morning.lyhry.cn.gov.cn.lyhry.cn http://www.morning.wkknm.cn.gov.cn.wkknm.cn http://www.morning.pznnt.cn.gov.cn.pznnt.cn http://www.morning.yfnjk.cn.gov.cn.yfnjk.cn