数据结构---哈夫曼树的Java实现
1、节点类
//节点类
package com.hang.demo01;public class Node implements Comparable<Node>{int value;Node left;Node right;public Node(int value) {this.value = value;}@Overridepublic int compareTo(Node node) {return this.value - node.value;}@Overridepublic String toString() {return "Node{" +"value=" + value +'}';}
}
2、主类
package com.hang.demo01;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class TestHuffmanTree {public static void main(String[] args) {int[] arr = new int[]{3, 7, 8, 29, 5, 11, 23, 14};Node huffmanTree = createHuffmanTree(arr);System.out.println(huffmanTree.value);}//创建哈夫曼树public static Node createHuffmanTree(int[] arr) {//使用数组中的所有元素创建若干个二叉树List<Node> nodes = new ArrayList<>();for (int value : arr) {nodes.add(new Node(value));}//排序Collections.sort(nodes);//将权值最小的两个二叉树取出来while (nodes.size() > 1) {Node left = nodes.get(0);Node rigth = nodes.get(1);//创建一个新的二叉树Node parent = new Node(left.value + rigth.value);//把取出来的两个二叉树移除nodes.remove(left);nodes.remove(rigth);//将新的二叉树方放入原来的二叉树集合nodes.add(parent);}return nodes.get(nodes.size()-1);}
}
数据结构---哈夫曼树的Java实现相关推荐
- 数据结构(哈夫曼树,哈夫曼编码)入门篇,JAVA实现
什么是哈夫曼树 哈夫曼树就是一种最优判定树,举个例子,如下一个判断逻辑 if(s<60) g=1; else if(s<70) g=2 else if(s<80) g=3 else ...
- 数据结构---哈夫曼树
数据结构-哈夫曼树 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 100 #define INF ...
- 【数据结构——哈夫曼树及其应用】
[数据结构--哈夫曼树及其应用] 一.哈夫曼树的基本概念 二.哈夫曼树的构造算法 (一)哈夫曼树的构造过程 (二)哈夫曼树构造算法的实现 1.初始化 2.创建树 3.完整的创建哈夫曼树代码 三.哈夫曼 ...
- 数据结构哈夫曼树实现26个英文字符的编码和译码
数据结构哈夫曼树实现26英文字符的编码和译码 那么首先什么是哈夫曼树?(知道的略过,直奔下面代码就好!) 在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编 ...
- 数据结构--赫夫曼树
数据结构 –赫夫曼树 文章目录 数据结构 一.一些概念 二.最优二叉树(赫夫曼树) 三.赫夫曼树的构造 四.赫夫曼编码 五.前缀编码 一.一些概念 路径:从树中一个结点到另一个结点之间的分支构成这两个 ...
- 《数据结构与算法之哈夫曼树(Java实现)》
说在前头: 本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正. ...
- 【数据结构与算法】哈夫曼树的Java实现
哈夫曼树 最优二叉树也称哈夫曼树,讲的直白点就是每个结点都带权值,我们让大的值离根近.小的值离根远,实现整体权值(带权路径长度)最小化. 哈夫曼算法的思想我认为就是上面讲的,而它的算法实现思路是这样的 ...
- 哈夫曼树的java实现_java实现哈夫曼树
哈夫曼译码,就是将输入的译码还原成对应的字符. 抽象的算法描述:将建立哈夫曼树.实现哈夫曼编码.哈夫曼译码都定义成 子函数的的形式, 然后在主函数中调用它们...... 数据结构课程设计设计题目: 哈 ...
- 数据结构 - 赫夫曼树
wpl最小的就是赫夫曼树(所有叶子节点的带权路径长度之和最小) 写出来两个节点连接,然后循环就可以了 package tree.huffmantree;import java.util.ArrayLi ...
- 最优二叉树(哈夫曼树)Java实现
此篇博客讲最优二叉树也叫哈夫曼树的原理,以及构建步骤,还有哈夫曼编码原理.建议有二叉树基础朋友学习交流.对二叉树基础可以看我的另外一篇博客二叉树的构建以及遍历 文章目录 哈夫曼树引出: 哈夫曼树原理及 ...
最新文章
- R语言bioconductor包—maftools的使用
- codeplex网站翻译
- 【电商】几种电商模式及特点
- 数控加工编程计算机的配置,计算机辅助数控加工编程.ppt
- WPF DataGrid 在Header中显示行号
- java控制面板作用_大师为你分析win7系统打开java控制面板的方法
- CSS单位--px,em,rem,rpx区别
- 数据分析的法宝---箱形图(Box Plot)
- ENVI执行监督分类后分类结果背景也被分类了的解决方案
- MA5680T配置指导
- 程序员年龄增大后的职业出路是什么?
- 无线连接世界 创新驱动中国 《微波射频技术》杂志发布
- windows平台下静态库(.lib)和动态库(.dll)使用
- java如何循环输出一个表格,Java编程for循环输出俄文字母表
- 反弹shell和键盘记录器实现
- docker重启 容器自动重启
- python计算线段夹角
- 计算机主机电源绿黑,台式电脑电源高手维修,短接绿黑线风扇转一下就停。
- C语言 赋值抑制字符*
- 新来个技术总监,仅花2小时,撸出一个多线程永动任务,看完直接跪了,真牛逼!