Huffman java 代码实现
来源:互联网 发布:数据结构常用算法 编辑:程序博客网 时间:2024/05/19 14:15
package com.example.huffman;import java.util.ArrayList;import java.util.List;import java.util.PriorityQueue;public class Huffman {List<Node> huffmanCode(List<Node> nodes) {List<Node> temp = new ArrayList<Node>(nodes);PriorityQueue<Node> queue = new PriorityQueue<Node>(nodes);for(int i=0;i<nodes.size()-1;i++){Node l = queue.poll();Node r = queue.poll();Node tempNode = new Node(l,r,"@special",l.freq+r.freq);temp.add(tempNode);queue.add(tempNode);}return temp;}void ergodic(Node node,String str){if(node.l!=null)ergodic(node.l,str+"0");if(node.r!=null)ergodic(node.r,str+"1");if(node.l==null||node.r==null)System.out.println(str+" "+node.keyOrType);}public static void main(String[] args) {List<Node> nodes = new ArrayList<Node>();nodes.add(new Node(null,null,"a",45));nodes.add(new Node(null,null,"b",13));nodes.add(new Node(null,null,"c",12));nodes.add(new Node(null,null,"d",16));nodes.add(new Node(null,null,"e",9));nodes.add(new Node(null,null,"f",5));Huffman h = new Huffman();nodes = h.huffmanCode(nodes);Node node = nodes.get(nodes.size()-1);h.ergodic(node,"");}}class Node implements Comparable<Object>{Node l;Node r;String keyOrType;int freq;public Node(Node l, Node r, String keyOrType, int freq) {this.l = l;this.r = r;this.keyOrType = keyOrType;this.freq = freq;}public Node(){}@Overridepublic int compareTo(Object o) {Node node = (Node) o;return this.freq - node.freq;}@Overridepublic String toString() {return "Node [l=" + l + ", r=" + r + ", keyOrType=" + keyOrType+ ", freq=" + freq + "]";}}
0 0
- Huffman java 代码实现
- 哈夫曼编码(Huffman)Java实现代码
- Huffman代码实现
- Huffman编码 Java实现
- Huffman编码Java实现
- Huffman编码---java实现
- java实现Huffman树
- 哈夫曼编码(Huffman)Java实现代码简化版
- Huffman 压缩解压缩java实现
- Huffman树及JAVA实现
- 【数据压缩】Huffman原理与代码实现
- Huffman编码树的Java实现
- Huffman编码——Java实现
- Huffman编码算法之Java实现
- Huffman编码算法之Java实现
- Huffman编码算法之Java实现
- [信息论]Huffman编码的JAVA实现
- Huffman 编码算法之 Java 实现
- 一个好的libpcap例子
- 由localhost:8080直接进入指定项目
- VMWare三种工作模式
- 函式库管理:ldconfig 与 /etc/ld.so.conf 以及 ldd
- android Standard Broadcast Actions 的对比和锁屏前后的测试
- Huffman java 代码实现
- RTP发送音视频流vlc播放
- hadoop-2.4.0 URLCat
- Ubuntu 14.04 使用速度极快的Genymotion 取代蜗牛速度的原生AVD模拟器
- C++中static的一点用法
- iostream迭代器
- Oracle数据库的创建与删除(DROP DATABASE语句)
- Spring事务处理时自我调用的解决方案及一些实现方式的风险
- poj 2151 (DP)