计算哈夫曼树的WPL值

根据给定的n个权值(非负值),计算所构造哈夫曼树的WPL值。

基本要求:

(1)根据给定的数据,建立哈夫曼树;

(2)输出每个叶子结点的带权路径长度;

(3)输出哈夫曼树的WPL值。

测试数据要求:

输入的n个权值之和应为100,且不允许有负值。

核心代码:

void createhuffman(int &t,int n){

int i;

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

f[i].data=a[i].data;

f[i].lchild=f[i].rchild=0;

a[i].addr=i;

}

t=n+1;

i=n;

while(i>=2){

sort(a+1,a+i+1);

f[t].data=a[1].data+a[2].data;

f[t].lchild=a[1].addr;

f[t].rchild=a[2].addr;

a[1].data=f[t].data;

a[1].addr=t;

a[2].data=a[i].data;

a[2].addr=a[i].addr;

i--;t++;

}

}

完整的调试代码:

#includ

wpl计算方法_【数据结构】树的应用-计算哈夫曼树的WPL值相关推荐

  1. 数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)

    目录 什么是哈夫曼树 哈夫曼树的定义 哈夫曼树的构造 图解操作 代码实现 代码解析 哈夫曼树的特点 哈夫曼编码 不等长编码 二叉树用于编码 哈夫曼编码实例 什么是哈夫曼树 我们先举个例子: 要将百分制 ...

  2. 【数据结构】树(七)—— 哈夫曼树(C语言版)

    [数据结构]树(七)-- 哈夫曼树(C语言版) 前言 一.哈夫曼树的定义 二.哈夫曼树的构造过程描述 三.哈夫曼树的特点 四.哈夫曼树的应用--哈夫曼编码 1. 各类编码定义 2. 哈夫曼编码的构造 ...

  3. 数据结构图文解析之:哈夫曼树与哈夫曼编码详解及C++模板实现

    0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...

  4. 【赫夫曼树详解】赫夫曼树简介及java代码实现-数据结构07

    赫夫曼树(最优二叉树) 1. 简介 定义: 赫夫曼树是n个带权叶子结点构成的所有二叉树中,带权路径长度(WPL)最小的二叉树. 叶子结点的带权路径: 叶子结点权值*到根节点的路径长度(叶结点的层数) ...

  5. 【数据结构】基于c++的哈夫曼树构造、编码、译码算法实现

    创建哈夫曼树的描述: 数据结构: 数据的逻辑结构是树状结构:采用静态的三叉链表存放. 算法思想: 1.先把三叉链表中N个元素进行初始化,存放叶子节点,他们都没有孩子和双亲. 2.再初始化后n-1个非叶 ...

  6. 【数据结构和算法笔记】哈夫曼树的概念,构造和应用(利用哈夫曼编码压缩文本)

    目录 哈夫曼树定义: 构造哈夫曼树: 哈夫曼编码 前缀编码: 应用(压缩文本) 哈夫曼树定义: 构造哈夫曼树: 哈夫曼编码 前缀编码:  哈夫曼编码是前缀编码 哈夫曼树的性质 哈夫曼树的任意非叶结点的 ...

  7. 【数据结构_Day05】 树和二叉树、树和森林、哈夫曼树

    1.树 根节点:非空树中无前驱结点的结点 结点的度:结点拥有的子树数 树的度:树内各结点的度的最大值 森林不一定是树,树一定是森林 2.二叉树 二叉树和树是不一样的概念 二叉树严格区分左子树和右子树, ...

  8. 【数据结构与算法基础】哈夫曼树与哈夫曼编码(C++)

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  9. 常用数据结构之线索二叉树和哈夫曼树

    1.线索二叉树 上一篇二叉树中,我们介绍了基本的二叉树的结构.每一个父节点对应两个子节点,左子节点和右子节点.其中我们会看到,很多节点的左右节点都为null,为了更高效的存储和遍历,我们考虑一种方式将 ...

最新文章

  1. 流媒体服务器开发笔记(2)--RTCP协议介绍
  2. Java解码网页表单post内容小记
  3. 【数理知识】《数值分析》李庆扬老师-第9章-常微分方程初值问题数值解法
  4. 删除c++程序中的注释
  5. ASP.NET获取客户端、服务器端基础信息
  6. DOM编程练习(慕课网题目)
  7. 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书
  8. list去除重复值的方法(面试高频)
  9. alsa 放的声音和录制的声音之间的延时_webrtc视频录制总结
  10. C#_基础_异常捕获(六)
  11. vue系列---identify(生成图片验证码)插件
  12. Redis缓存相关问题总结
  13. 计算机网络的通信方式有哪几种,数据通信方式有哪几种
  14. Python爬虫爬取豆瓣图书的信息和封面,放入MySQL数据库中。
  15. 深入理解C语言小括号用法
  16. 给电脑设置视力保护色
  17. Android 锁屏,息屏情况下打开界面Activity,类似微信视频通话接电话时弹出接电话的界面
  18. 计算机ifand函数补考科目,Excel函数公式:逻辑函数IF、AND、OR、NOT、IFERROR实用技巧解读...
  19. MySQLyog的使用
  20. UE4 Slate四 SlateUI如何做动画

热门文章

  1. PyTorch报错:RuntimeError: CUDA error: device-side assert triggered at /pytorch/aten/src/THC/generic
  2. 只招「测试开发工程师」了
  3. 【经济学】读曼昆《微观经济学》
  4. 关于Java多态的认识和一个列子
  5. 百度松果菁英班东华二期25周oj赛
  6. 一次粗虐的华为平板jdn-w09刷机过程
  7. 给国外电子邮箱发海外邮件用什么邮箱好?
  8. 永恒之蓝MS17-010漏洞利用 writeup
  9. 在tumbleweed中准备hadoop和mongodb环境
  10. 中国国家地名信息库数据加密破解