展开全部

#include

using namespace std;

struct node

{

int w;

int flag;

int lchild,rchild;

int parent;

};

node huff[1001];

int n;

void read()

{

int i;

cout<

cin>>n;

for(i=1;i<=n;i++)

cin>>huff[i].w;

}

int huffman()

{

int i,min1,min2,k1,k2,j,s;//初始化标记

for(i=1;i<=2*n-1;i++)

{

huff[i].flag=0;

huff[i].lchild=-1;

huff[i].rchild=-1;

huff[i].parent=-1;

}

//n-1次建树

for(i=1;i<=n-1;i++)

{

min1=100000;

min2=100000;//求最小初始化最大

k1=-1;// 记下最小次小的下标

k2=-1;

for(j=1;j<=n+i-1;j++)//搜索范围

{

if((huff[j].w

{

min2=min1;//最小给次小

k2=k1;//记下次小下标

min1=huff[j].w;//把最小赋值给min1

k1=j; //记下最小下标

}

else if((huff[j].w

{

min2=huff[j].w;//直接修改次小值

k2=j;//记下次小的下标

}

}

huff[n+i].w=min1+min2;//新增加的结点

huff[k1].flag=1;//填最小与次小的标记:

huff[k2].flag=1;

huff[k1].parent=n+i;//填最小与次小的parent:

huff[k2].parent=n+i;

huff[n+i].lchild=k1;//填新增结点的左右孩子:

huff[n+i].rchild=k2;

}

s=0;//WPL的值为非叶子结点之和

for(i=n+1;i<=2*n-1;i++)

s=s+huff[i].w;

cout<

return s;

}

void print(int t,string s1)

{

if ((huff[t].lchild==-1)&&(huff[t].rchild==-1))

cout<

else

{

print(huff[t].lchild,s1+"0");

print(huff[t].rchild,s1+"1");

}

}

int main()

{

read();

huffman();

print(2*n-1,"");

}

wpl计算方法_C++哈夫曼树WPL的计算 求代码相关推荐

  1. wpl计算方法_【数据结构】树的应用-计算哈夫曼树的WPL值

    计算哈夫曼树的WPL值 根据给定的n个权值(非负值),计算所构造哈夫曼树的WPL值. 基本要求: (1)根据给定的数据,建立哈夫曼树: (2)输出每个叶子结点的带权路径长度: (3)输出哈夫曼树的WP ...

  2. 赫夫曼树(WPL最小树)

    13.4 赫夫曼树 基本介绍: 给定 n 个权值作为 n 个叶子节点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,成这样的二叉树为 最优二叉树, 也成为 赫夫曼树(Huffman Tree ...

  3. 带权路径长度wpl值_哈夫曼树带权路径长度怎么计算

    哈夫曼树的带权路径长度是什么? 1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和.在结点数目相同的二叉树中,完全二叉树的路径长度最短. 2.树的带权路径长度(Weighted Pat ...

  4. 哈夫曼树的构造C/C++代码实现

    哈夫曼树: 所谓哈夫曼(Huffman)树就是最优二叉树,是带权路径长度WPL最小的二叉树. 哈夫曼树的构造: 根据哈夫曼树的特点:权值越大的结点离根结点越近. 具体方法:依次选择权值最小的二个结点作 ...

  5. 哈夫曼树的构造及C++代码实现

    哈夫曼树的构造过程: (1) 以权值分别为W1,W2...Wn的n各结点,构成n棵二叉树T1,T2,...Tn并组成森林F={T1,T2,...Tn},其中每棵二叉树 Ti仅有一个权值为 Wi的根结点 ...

  6. 【id:180】【20分】D. DS二叉树--赫夫曼树解码(不含代码框架)

    题目描述 已知赫夫曼编码算法和程序,在此基础上进行赫夫曼解码 在赫夫曼树的类定义中增加了一个公有方法: int  Decode(const string codestr, char txtstr[]) ...

  7. C语言:哈夫曼树构造及编码(核心代码每一行都有注释)

    一.[实验目的及要求] 理解Huffman树的概念及其存储结构: 熟悉Huffman树的构造: 掌握Huffman树的编码方法. 二.[实验内容] 1.代码实现Huffman编码 2.请统计每个字符出 ...

  8. 哈夫曼树 构造,编码 完整代码

    Haffman Tree 构造方法: 1.初始化每个叶子结点都是一棵树. 2.找最小权值的两棵树. 3.合并两树,生成新结点. 编码: 1.往左为1,右为0. 2.不等长编码. #include< ...

  9. java哈夫曼树权值计算_JAVA 哈夫曼树权值求和(代码找错)

    展开全部 兄弟,你把如下第28行的count++;注释掉,一切问题都可以解决! 自己先琢磨为什么,不懂的再问!import java.util.Arrays; import java.util.Sca ...

最新文章

  1. 焦李成院士:进化优化与深度学习的思考
  2. 跨站请求伪造(CSRF)-简述
  3. 轻松掌控全链路监控:方案概述与对比 | 真的很干!
  4. Linux中THIS_MODULE宏定义详解
  5. Arduino_esp32_WiFi代码
  6. Builder模式和Spring框架
  7. 【Pytorch神经网络实战案例】04 使用Pytorch实现线性回归
  8. “通信大数据”征文通知
  9. Web 安全与 Rational AppScan 入门
  10. 编译速度谁“最快”?25岁的 C++Builder 还能打
  11. 奥迪A8的L3级自动驾驶方案---奥迪A8的zFAS
  12. matlab中xlsread无法打开文件,Matlab xlsread打开文件并清理
  13. netbeans乱码问题
  14. 戴尔7040linux改装win7,戴尔OptiPlex 7040台式机win10怎么改win7
  15. 移动端适配,华为浏览器底色无法正常显示
  16. 公共数据库介绍~datahub
  17. ping检测网络连接异常
  18. 海信Vidda S65 2023款和2020款有什么区别?哪个更好
  19. element ui el-table单元格按需合并
  20. 看一看:不同Web前端框架的优缺点分别是什么?

热门文章

  1. win10:打开了很多窗口,但任务栏上一个都不显示
  2. Mysql加密身份证号
  3. 面向 python 小白的贪吃蛇游戏
  4. 接口调用失败重试方案
  5. UDS14229-2020 29服务介绍
  6. codeforces 1303A Erasing Zeroes 水
  7. 芯片产业 - 常见流程和术语
  8. Java 安全管理类SecurityManager
  9. 【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose
  10. dda算法控制电机_求PWM速度控制系统是通过脉宽调制器对大功率晶体管的开关时间进...