本文是数据结构基础系列(6):树和二叉树中第15课时哈夫曼树的例程。#include
#include #define N 50 //叶子结点数
#define M 2*N-1 //树中结点总数//哈夫曼树的节点结构类型
typedef struct
{
char data; //结点值
double weight;...
分类:
其他好文 时间:
2015-10-20 06:41:24
阅读次数:
161
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5350智商题…求最小哈夫曼树的编码。取数据中最小的两个数,相加并加到总和中,将相加后的和作为一个节点。用到优先队列。比如case2,最小哈夫曼树是这样的。 104 ...
分类:
其他好文 时间:
2015-09-09 19:17:44
阅读次数:
283
1 import random 2 #定义节点 3 class Node: 4 def __init__(self,weight=0,left=None,right=None): 5 self.weight=weight 6 self.left=left 7...
分类:
编程语言 时间:
2015-09-04 18:29:56
阅读次数:
873
作为一个通信人,本科时候上过信息论,研究生也继续修过信息编码。面试的时候,面试官说了一个哈夫曼树,作为一个通信人竟然忘了。多少有些说不过去。理论知识Huffman算法的最根本的原则是:累计的(字符的统计数字字符的编码长度)为最小,也就是权值(字符的统计数字字符的编码长度)的和最小。 这样编码可以达到压缩的效果。又名最优二叉树。
具体的可以参考左耳朵耗子的博客:http://coolshell.c...
分类:
编程语言 时间:
2015-08-28 21:28:36
阅读次数:
240
基本概念:1、路径是指从一个节点到另一个节点之间的分支序列,路径长度是指从一个节点到另一个节点所经过的分支数目。2、实际生活中,我们为每一个节点赋予实际的意义的实数,称该实数为节点的权。在树形结构中把树根到某一节点的路径长度与该节点的权乘积叫该节点的带权路径长度。3、树的带权路径长度是树中所有叶子节...
分类:
其他好文 时间:
2015-08-21 23:09:47
阅读次数:
288
哈夫曼树又称为最优二叉树,哈夫曼树的一个最主要的应用就是哈夫曼编码,本文通过简单的问题举例阐释哈夫曼编码的由来,并用哈夫曼树的方法构造哈夫曼编码,最终解决问题来更好的认识哈夫曼树的应用--哈夫曼编码。 一、引子 在学习中我们经常遇到将各科成绩改为优秀、良好、中等、及格和不及格。那么根据分级原理,代码...
分类:
其他好文 时间:
2015-08-19 16:08:45
阅读次数:
180
题目大意:Framer John有一段木板,想用以建筑围墙,没有锯子的他只好向Framer Don求助。FD提出要求,FJ每截开一段木板,就要给这段木板长度的钱。FJ想使花费最少,向你求助。
思路:绝对是合并果子的翻版!把截木板当成合并木板就行了。小心L、n的范围,最终的ans用int装是装不下的,要用long long。
代码如下:
#include
#include<cstd...
分类:
其他好文 时间:
2015-08-19 13:33:19
阅读次数:
148
1.假设某段通信电文仅由 6 个字母 ABCDEF 组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈夫曼编码,最终构造出的哈夫曼树带权路径长度与字母 B 的哈夫曼编码分别为______。(这里假定左节点的值小于右节点的值)86,1011;70,1000;86,0...
分类:
其他好文 时间:
2015-08-18 16:02:45
阅读次数:
135
#include
#include
#define inf 1<<30
using namespace std;
//哈夫曼树实现
//哈夫曼树的特征:如果有n个叶子节点的话,则总结点数为2*n-1。越频繁访问的编码越短
struct node
{
int parent, lson, rson;
int val; //访问次数
};
void createTree(node p...
分类:
其他好文 时间:
2015-08-15 20:02:10
阅读次数:
120