哈夫曼树
来源:互联网 发布:js将字符串转换成日期 编辑:程序博客网 时间:2024/05/21 19:57
设二叉树具有n个带权值的叶子结点,从跟结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度(WPL),我们将其中WPL最小的二叉树叫做哈夫曼树。
哈夫曼算法的基本思想是:
将n个结点按照权值从小到大排序,也就相当于n个树,取其中根节点最小的两棵树构造一棵新的二叉树,将这两棵数在原集合中删除,并将新树的加入原集合中继续重复比较直到只剩下一棵二叉树。
哈夫曼树的结构类型为:
struct element{ int weight; int lchild,rchild,parent;};
哈夫曼树算法实现:
void HuffmanTree(element huffTree[],int w[],int n){for (int i = 0; i < 2 * n - 1; i++)//初始化,所有结点均无双亲和孩子{huffTree[i].parent = -1;huffTree[i].lchild = -1;huffTree[i].rchild = -1;}for (int j = 0; j < n; j++)//构造n棵只含根节点的二叉树huffTree[j].weight = w[j];for (int k = n; k < 2 * n - 1; k++)//开始构造(n - 1次){int t1,t2;GetMin(huffTree,t1,t2);//查找权值最小的两个根结点,保存其下标huffTree[t1].parent = k;huffTree[t2].parent = k;huffTree[k].weight = huffTree[t1].weight + huffTree[t2].weight;huffTree[k].lchild = t1;huffTree[k].rchild = t2;}}
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 2013年4月26日(7-7,从一个表面向另一个表面复制位图)
- div里面的内容超出自身高度时,显示省略号
- windows下批处理文件的编写
- Remove duplicates from sorted list II
- Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
- 哈夫曼树
- Python入门(三)
- CString.Format详细用法
- Matlab字符分割程序
- Idoc学习笔记
- CRC16 LRC校验
- PowerDesigner15.1创建模型及生成带中文注释
- [win7][flex]中修改SVN插件用户名和密码
- mysql 排序后加序号