Loading

摘要: 1. 基本介绍 赫夫曼编码(Huffman Coding) 是 Huffman 于 1952 年提出一种编码方法,称之为最佳编码,属于一种程序算法。 赫夫曼编码是 {赫夫曼树} 在电讯通信中的经典的应用之一,赫夫曼编码广泛地用于数据文件压缩,其压缩率通常在 20%~90% 之间。赫夫曼码是可变字长编 阅读全文
posted @ 2020-02-18 20:57 tree6x7 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 1. 几个重要概念 1.1 路径和路径长度 路径:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路; 路径长度:通路中分支的数目;若规定根结点的层数为 1,则从根结点到第 L 层结点的路径长度为 L-1。 1.2 结点的权及带权路径长度 结点的权:将树中结点赋给一个有着某种含义的数值; 阅读全文
posted @ 2020-02-18 20:54 tree6x7 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 1. 引入 2. 基本介绍 n 个结点的二叉链表中含有 n+1 个空指针域 利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索") 一个结点的前一个结点,称为“前驱结点” 一个结点的后一个结点,称为“后继结点” 这种加上了线索的二叉链表称为线索链 阅读全文
posted @ 2020-02-18 20:53 tree6x7 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 1. 概念 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。但顺序存储二叉树通常只考虑的是完全二叉树。 用数组存储无疑是最节省内存的一种方式。因为数组的存储方式并不需要像链式存储法那样,要存储额外的左右子节点的指针。这也是为什么完全二叉树会单独拎出来的 阅读全文
posted @ 2020-02-18 20:51 tree6x7 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 1. 遍历方式 a. 先序遍历 步骤 // 先访问根结点 访问根结点 先序访问左子树 先序访问右子树 举例 b. 中序遍历 步骤 // 中间访问根结点 中序遍历左子树 访问根结点 中序遍历右子树 举例 c. 后序遍历 步骤 // 最后访问根结点 后序遍历左子树 后序遍历右子树 访问根结点 举例 2. 阅读全文
posted @ 2020-02-18 20:50 tree6x7 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1. 树 1.1 定义 树是 n(n>=0) 个结点的有限集,在任意一棵非空树中: 有且仅有 1 个特定的称为“根”的结点。 当 n>1 时,其余结点可分为 m 个互不相交的有限集 T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且称为根的“子树”。 1.2 基本术语 1.3 树的分类 【一般 阅读全文
posted @ 2020-02-18 20:49 tree6x7 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 1. 线性结构存储方式分析 1.1 数组存储方式的分析 优点:通过下标方式访问元素,速度快;对于有序数组,还可使用二分查找提高检索速度 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 1.2 链表存储方式的分析 优点:在一定程度上对数组存储方式有优化 (比如:插入一个数值结 阅读全文
posted @ 2020-02-18 20:37 tree6x7 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 散列表(Hash table,也叫哈希表),是根据 关键码值(Key value) 而直接进行访问的数据结构。也就是说,它通过把关键码值 映射 到表中一个位置来访问记录(也就是先找是存放在哪条链表上),以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 2. 案例 有 阅读全文
posted @ 2020-02-18 20:36 tree6x7 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 1. 顺序(线性) 查找 额,没啥要说的吧。优点的话,就是待查找集合数据可以无序 2. 二分/折半查找 2.1 思路分析 确定有序数组中间元素的索引 mid = (left + right) / 2 让待查找数 findVal 和 arr[mid] 比较 findVal > arr[mid],说明待 阅读全文
posted @ 2020-02-18 20:26 tree6x7 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 1. 优先队列 许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。很多情况下我们会收集一些元素,处理当前键值最大的元素,然后再收集更多的元素,在处理当前键值最大的元素,如此这般 ... 在这种情况下,一个合适的数据结果应该支持两种操作:删除最大元素和插入元素。 阅读全文
posted @ 2020-02-18 20:24 tree6x7 阅读(157) 评论(0) 推荐(0) 编辑