摘要: 二叉排序树 先看一个需求 给你一个数列 (7, 3, 10, 12, 5, 1, 9),要求能够高效的完成对数据的查询和添加  使用数组 数组未排序, 优点:直接在数组尾添加,速度快。 缺点:查找速度慢. [示意图] 数组排序,优点:可以使用二分查找,查找速度快,缺点:为了保证数组有序,在添加新数 阅读全文
posted @ 2021-07-21 21:55 HJ0101 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 基本介绍 1) 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法 2) 赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。 3) 赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在 20%~90%之间 4) 赫夫曼码是可变字长编码(V 阅读全文
posted @ 2021-07-21 21:50 HJ0101 阅读(838) 评论(0) 推荐(0) 编辑
摘要: 基本介绍 1) 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为 最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。 2) 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 赫夫曼树几个重要概念和举例 阅读全文
posted @ 2021-07-21 21:38 HJ0101 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 堆排序基本介绍 1) 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为 O(nlogn),它也是不稳定排序。 2) 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有 要求结点的左孩子的值和 阅读全文
posted @ 2021-07-21 21:12 HJ0101 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 先看一个问题 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n+1=7 问题分析: 1) 当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 } 2) 但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上. 3) 如果我 阅读全文
posted @ 2021-07-21 20:59 HJ0101 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 顺序存储二叉树的概念 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组 要求: 1) 右图的二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6] 2) 要求在遍历数组 arr 时,仍然可以以前序遍历,中序遍历和后序 阅读全文
posted @ 2021-07-21 20:51 HJ0101 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 为什么需要树这种数据结构 1) 数组存储方式的分析 优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 2) 链式存储方式的分析 优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只 阅读全文
posted @ 2021-07-21 20:42 HJ0101 阅读(39) 评论(0) 推荐(0) 编辑