哈夫曼树

最优二叉树也称哈夫曼树,讲的直白点就是每个结点都带权值,我们让大的值离根近、小的值离根远,实现整体权值(带权路径长度)最小化。

哈夫曼算法的思想我认为就是上面讲的,而它的算法实现思路是这样的:
从根结点中抽出权值最小的两个(涉及排序,但是我这个实现代码没做严格的排序,只有比较)合并出新的根结点重新加入排序(被抽出来的两个自然是变成非根结点了啊),就这样循环下去,直到合并完成,我们得到一颗最优二叉树——哈夫曼树。

说明:

  1. 哈夫曼树有n个叶子结点,则我们可以推出其有n-1个分支结点。因此我在定义名为huffmanTree的HuffmanNode类型数组时定义长度为2*n-1。
  2. 这里排序相关没有做得很好,只是为了实现而实现,以后慢慢完善。
  3. 理论上讲哈夫曼树应该是不仅仅局限于数值,能compare就行,但这里只用int表示。

定义哈夫曼树结点

public class HuffmanNode {private int weight =

【数据结构与算法】哈夫曼树的Java实现相关推荐

  1. 数据结构与算法 / 霍夫曼树、霍夫曼编码和解码

    一. 诞生原因 找出存放一串字符所需的最少的二进制编码. 二. 构造方法 首先统计出每种字符出现的频率,即:概率.权值. 例如:频率表 A:60,    B:45,   C:13   D:69   E ...

  2. 数据结构与算法--哈夫曼树及其应用

    一.哈夫曼树的基本概念 1) 路径: 从树中一个结点到另一个结点之间的分支构成这两个结点间的路径 2) 结点的路径长度: 两结点间路径上的分支数           3) 树的路径长度:从树根到每一个 ...

  3. 数据结构与算法——赫夫曼树基本实现

    目录 一.赫夫曼树 1.1 基本介绍 1.2 赫夫曼树创建步骤图解 1.3  代码实现 二.赫夫曼编码 2.1 基本介绍 2.1.1  通讯领域 - 定长编码 - 举例说明 2.1.2  通讯领域 - ...

  4. 数据结构与算法(赫夫曼树,赫夫曼编码)

    赫夫曼树 基本介绍: (1)给定n个权值作为n给叶子节点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称哈夫曼树(HuffmanTree),还有的树翻译为霍夫 ...

  5. 数据结构与算法--哈夫曼树应用

    第1关:统计报文中各个字符出现的次数 任务描述 本关任务: 给定一串文本,统计其中各个字符出现的次数: 测试说明 平台会对你编写的代码进行测试: 测试输入:` abcdeabcdeabcdabcdab ...

  6. 数据结构实验之——哈夫曼树的实现

    数据结构实验之--哈夫曼树的实现 目录 说明 代码 测试用例 目录 说明 哈夫曼树的这个实验我是采用常用的左'0'右'1'来实现的,输入是用文本输入的,大家在用之前目录下要记得创建"HT.t ...

  7. 《数据结构与算法之哈夫曼树(Java实现)》

    说在前头: 本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正. ...

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

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

  9. 数据结构实验——基于哈夫曼树的数据压缩算法

    /* 注:输入为多行字符串,以"0"结尾:例:abc def 0 此程序无法执行由单个字符组成的字符串. */ #include<iostream> #include& ...

最新文章

  1. 8款效果精美的 jQuery 加载动画和进度条插件
  2. make警告:检测到时钟错误。您的创建可能是不完整的
  3. 的setinterval函数_Vue定时器与JS 定时器 setInterval() 和 setTimeout()
  4. RestTemplate使用详解
  5. java 最好 入门_C++和Java哪个比较好入门?初学者该如何选择?
  6. hosts 文件与 ipv6
  7. js 计算当前时间的前n分钟或后n分钟的时间
  8. “我在B站有套房”成真:云蹦迪、不停学还健身
  9. oracle数据转换,Oracle数据库转换函数
  10. java jshell_JDK11 | 第二篇 : JShell 工具
  11. 前端工程师行业现状怎么样?前景如何?
  12. Django项目详解2——动态响应的web应用
  13. 哈夫曼树实现:统计文本信息,构造哈夫曼树,并对其进行编码与解码
  14. dlib实现人脸识别方法
  15. RH linux 6.4的虚机里 OpenGL或OSG不能用
  16. 【离散数学】点割集(割点集)与边割集详解
  17. 前后端交互之form表单和模板引擎
  18. k8s查看pod的yaml文件_k8s yaml文件说明
  19. 自动控制原理9.1---线性系统的状态空间描述(中上)
  20. 用oracle的rollup函数进行合计操作

热门文章

  1. struts2--文件上传大小
  2. Commerce Server 2002 Starter Site and 2006 overview
  3. 判断一个数是否存在于一个非递减的有序数列中 算法(Ordered Search Problem)
  4. 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例
  5. php edm 系统,edm.php
  6. java中如何合并两个网格,Hazelcast: Java分布式内存网格框架(平台)
  7. centos中使用rpm包或yum命令在线安装的软件默认是安装在那个目录下
  8. 机器学习笔记(二十)——求解最大熵模型
  9. 2022年中国母婴新消费白皮书
  10. 互联网晚报 | 3月1日 星期二 |​ 2022年苹果可能推出三款Apple Watch;“国家中小学智慧教育平台”投入试运行...