二叉排序树 1. 基本介绍 二叉排序树:BST,对于二叉排序树的任何一个非叶子结点,要求左子结点的值比当前结点的值小,右子结点的值比当前结点的值大 特别说明:若有相同的值,可以将该结点放在左子结点或右子结点 2. 二叉排序树的创建和遍历 ...
分类:
编程语言 时间:
2020-04-24 20:17:44
阅读次数:
62
多路查找树 虽然二叉树的效率很高,但是也存在一些问题!二叉树是需要加载进内存的,倘若结点少无所谓,若有一亿个结点,就会有海量数据,会对速度造成影响 1. 多叉树 在二叉树中,每个结点规定最多有两个子结点,若允许每个结点可以有更多的数据项和子结点,那么就是多叉树 多叉树通过重新组织结点,减少树的高度, ...
分类:
编程语言 时间:
2020-04-24 20:11:25
阅读次数:
64
树的实际应用 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序属于选择排序,其最好、最坏、平均时间复杂度均为 O(nlogn) ,他也是 不稳定排序 1. 堆介绍及最大最小堆 堆是具有以下性质的完全二叉树 每个结点的值都大于或等于其左右孩子结点的值,称为大项堆 每个结点的值都小于等于其 ...
分类:
编程语言 时间:
2020-04-24 20:06:27
阅读次数:
68
赫夫曼编码 1. 基本介绍 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),也称霍夫曼编码,是一种编码方式,属于一种算法 赫夫曼编码也是赫夫曼树在电讯通信中经典的应用 赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间 赫夫曼码是可变字长编码(VLC)的一种。Huff ...
分类:
编程语言 时间:
2020-04-24 19:57:51
阅读次数:
60
树的实际应用 赫夫曼树 1. 基本介绍 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树, 若该树的带权路径长度(wpl)达到最小 ,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),也称霍夫曼树 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 2. 重要概念 路径 ...
分类:
编程语言 时间:
2020-04-24 19:52:14
阅读次数:
59
数据结构 图 一、基本介绍 图是一种数据结构,其中结点可以具有零个或者多个相邻元素。两个结点的连接称为边,结点也可以称为顶点 1.1 图的常用概念 顶点 边 路径 无向图 有向图 带权图 1.2 图的表示方式 邻接矩阵(二维数组) "逻辑结构" 分为两部分:V和E集合,其中,V是顶点,E是边。因此, ...
分类:
编程语言 时间:
2020-04-24 19:49:18
阅读次数:
65
内容简介: 本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好 ...
分类:
编程语言 时间:
2020-04-23 15:04:46
阅读次数:
359
栈的定义 官方定义:栈(Stack)是一个后进先出(Last in first out,LIFO)的线性表,它要求只在表尾进行删除和插入操作 小甲鱼的定义:所谓的栈,其实也就是一个特殊的线性表(顺序表、链表),但是它再操作上有一些特殊的要求和限制: 栈的元素必须"后进先出" 栈的操作只能再这个线性表 ...
分类:
编程语言 时间:
2020-04-23 12:19:37
阅读次数:
92
二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是 O(logn)。 不过,二叉查找树在频繁的动态更新过程中,可能会出现数的高度远大于 log2^n 的情况,从而导致各个操作的效率下降。极端情况下,二叉树会退化为链表,时间复 ...
分类:
编程语言 时间:
2020-04-23 00:21:58
阅读次数:
86