博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11、创建Huffman树,生成Huffman编码
阅读量:7037 次
发布时间:2019-06-28

本文共 2865 字,大约阅读时间需要 9 分钟。

1 package ren.laughing.datastructure.baseImpl;  2   3 import ren.laughing.datastructure.base.List;  4   5 /**  6  * 创建Huffman树  7  * 生成Huffman编码  8  * @author Laughing_Lz  9  * @time 2016年4月14日 10  */ 11 public class HuffmanTree { 12     /** 13      * 创建Huffman树 14      * @param nodes 15      * @return 16      */ 17     public HuffmanTreeNode buildHuffmanTree(HuffmanTreeNode[] nodes){ 18         int n = nodes.length; 19         if(n < 2){ 20             return nodes[0]; 21         } 22         List list = new ArrayList(); 23         for(int i = 0;i
((HuffmanTreeNode)list.get(i)).getWeight()){
//★ 44 list.insert(i, node); 45 return; 46 } 47 } 48 list.insert(list.getSize(), node);//若node的weight最小,放在list最后 49 return; 50 } 51 /** 52 * 生成Huffman编码 53 * @param root 54 */ 55 public void generateHuffmanCode(HuffmanTreeNode root){ 56 if(root == null){ 57 return; 58 } 59 if(root.hasParent()){ 60 if(root.isLChild()){ 61 root.setCoding(root.getParent().getCoding()+"0"); 62 } 63 if(root.isRChild()){ 64 root.setCoding(root.getParent().getCoding()+"1"); 65 } 66 } 67 generateHuffmanCode(root.getLChild()); 68 generateHuffmanCode(root.getRChild()); 69 } 70 public static void main(String[] args) { 71 HuffmanTreeNode[] nodes = creatHuffmanNodes(); 72 HuffmanTree huffmanTree = new HuffmanTree(); 73 HuffmanTreeNode root = huffmanTree.buildHuffmanTree(nodes); 74 System.out.println("构建的Huffman树根结点是"+root.getData()+",高度为:"+root.getHeight()+",权值为:"+root.getWeight()); 75 huffmanTree.generateHuffmanCode(root); 76 System.out.println(root.getRChild().getRChild().getLChild().getCoding());//★Huffman编码针对叶子结点,root结点无编码 77 } 78 /** 79 * 创建HuffmanNode结点组合 80 * @return 81 */ 82 public static HuffmanTreeNode[] creatHuffmanNodes(){ 83 HuffmanTreeNode[] nodes = new HuffmanTreeNode[7]; 84 HuffmanTreeNode node1 = new HuffmanTreeNode(1, 'A'); 85 HuffmanTreeNode node2 = new HuffmanTreeNode(2, 'B'); 86 HuffmanTreeNode node3 = new HuffmanTreeNode(3, 'C'); 87 HuffmanTreeNode node4 = new HuffmanTreeNode(4, 'D'); 88 HuffmanTreeNode node5 = new HuffmanTreeNode(5, 'E'); 89 HuffmanTreeNode node6 = new HuffmanTreeNode(6, 'F'); 90 HuffmanTreeNode node7 = new HuffmanTreeNode(7, 'G'); 91 nodes[0] = node2; 92 nodes[1] = node5; 93 nodes[2] = node1; 94 nodes[3] = node3; 95 nodes[4] = node4; 96 nodes[5] = node7; 97 nodes[6] = node6; 98 return nodes; 99 }100 }

 

转载于:https://www.cnblogs.com/Laughing-Lz/p/5392060.html

你可能感兴趣的文章
Hyper-V 之03 创建iSCSI存储和故障转移群集
查看>>
如何成为一名架构师?
查看>>
我的友情链接
查看>>
nfs failed, reason given by server: Permission denied的离奇解决
查看>>
2018 1.21测试
查看>>
DFS与BFS对比
查看>>
dedeCMS php语法在模版中的应用
查看>>
sublime 安装ctag 实现函数跳转
查看>>
sshd问题:A protocol error occurred. Change of username or service not allowed
查看>>
jQuery开发者眼中的AngularJS
查看>>
【DAY9】 关于多线程熊吃蜜Demo1的作业实验
查看>>
Python实现多属性排序
查看>>
nginx 访问日志分析
查看>>
RabbitMQ之消息确认机制(事务+Confirm)
查看>>
给出一个数组,计算数组中少了哪个数据的实现
查看>>
USB-232卡 配置
查看>>
C#窗体程序皮肤设置
查看>>
T-SQL.字符串函数
查看>>
mysql慢查询
查看>>
offices文件打开乱码问题如何处理
查看>>