二叉树的概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子节点。 哈夫曼树:给定n个权值作 ...
分类:
其他好文 时间:
2019-09-24 22:58:35
阅读次数:
123
[TOC] 更新、更全的《数据结构与算法》的更新网站,更有python、go、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11407287.html 一、什么是哈夫曼树(Huffman Tree) 如果我们将百分制的考试成绩转换成五分制的成绩,我们 ...
分类:
其他好文 时间:
2019-09-23 18:08:01
阅读次数:
97
接修复损坏的gzip压缩文件之原理篇,再次引用GZIP结构图:已知修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点。根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志、使用的哈夫曼树类型、以及3个哈夫曼树的树元素个数等。如果某个gzip文件中间有一个坏扇区,要找到坏扇区后的一个正常起点,仅需按位右移,一直移位到可以正常解压的某个位,就可能找到了正确的压缩包起始。而
分类:
其他好文 时间:
2019-08-20 15:26:09
阅读次数:
102
荷马史诗 题意:给n个单词出现的次数,然后给个k,让这个单词转换为二进制,然后求总长度最小,以及最大的一个转换后字符串的长度。 题解:我们发现这道题目,要求我们算出哈夫曼编码,也就是最短不重叠前缀的编码,那么我们就可以用上trie字典树的性质配合哈夫曼树进行处理. ...
分类:
其他好文 时间:
2019-08-01 00:06:13
阅读次数:
98
合并果子 题意:将n堆果子合并为一堆,每次合并两堆,合并消耗的体力为两堆果子的质量和,求消耗的体力最小。 思路:典型的哈夫曼树,两两最小,再放入优先队列,再重复直到只剩下一堆。 ...
分类:
其他好文 时间:
2019-07-31 23:37:22
阅读次数:
116
DAY 3 数据结构 1.堆 Priority_queue 大根堆 Priority_queue<int , vector<int> , greater<int> > 小根堆 支持插入一个值,删除最大/最小值 它重载了运算符或函数类 堆排序 P1090 合并果子 哈夫曼树 2.LCA(最近公共祖先) ...
分类:
其他好文 时间:
2019-07-22 09:57:09
阅读次数:
128
哈夫曼树(赫夫曼树/霍夫曼树 /最优树) 若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树 应用场景文件压缩,又叫压缩算法 现在有3课二叉树,都有四个节点,分别带权13,7,8,3 一段字符串中计算每一个字符重复的次数 扩充二叉树 对于一颗已有的二叉树,如果我们为他添加一系列 ...
分类:
编程语言 时间:
2019-07-14 19:43:22
阅读次数:
195
题目描述 六一到了,为了庆祝这个节日,好多商家都推出了很多好玩的小游戏。Tongtong看到了一个猜球球的游戏,有n种除了颜色之外完全相同的球,商家从中拿出来一个球球放到了箱子里,已知第i种颜色的球出现在箱子里的概率为ai。Tongtong可以用下面这种方法来确定箱子中球的颜色:向商家提出猜测:“是 ...
分类:
其他好文 时间:
2019-07-06 17:47:38
阅读次数:
135
今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用。 !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点。 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程。、 首先,我先假设你已经有了二叉树的相关知识,主要就是概念和遍历方式这些点。如果没有这些知识储备, ...
分类:
编程语言 时间:
2019-06-24 22:43:25
阅读次数:
143
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define leafNumber 20 4 #define totalNumber 39 5 #define maxValue 32767 6 typedef struct{ 7 char data; 8 in ...
分类:
其他好文 时间:
2019-06-14 00:49:31
阅读次数:
102