数据结构
文章平均质量分 84
介绍数据结构中数组、链表、栈、树等结构、原理、操作、代码实现等。
风漫漫雨歇歇
持之以恒、追本溯源、了解IT的世界。
展开
-
数据结构树-->B+树
B+树1. 特性数据个数比孩子节点个数少1.B+树包含两种节点,索引节点和叶子节点,所有数据都保存在叶子节点中,索引节点只保存索引,根节点可以是索引可以是叶子节点。m阶B+树节点最多有 m-1个索引或数据。节点索引或数据都从小到大排列,内部索引后数据大于左子树,小于或等于右子树。每个叶子节点都右相邻叶子节点的指针。2. B+树的插入B+树的插入和B树的插入类似,都是节点的分裂和数据的上移,只是分裂后中间数据变为了右子树的起始数据,上移的数据为中间数据的索引。eg: 5阶B+树插入 5原创 2021-08-12 14:04:19 · 517 阅读 · 0 评论 -
数据结构树-->B树
B树1. B树的定义B 树是一颗多路不平衡树,我们描述一颗B树时需要指定它的阶数,eg: 这是一颗5阶B树,阶数表示了一个节点最多有多少孩子节点,一般用M表述。m就是B树的阶数,当 m=2 时就是我们常见的二叉查找树。一个m阶B树的定义如下:每个节点最多有m-1个关键字。根节点最少可以只有1个关键字。非根节点至少有m/2个关键字。所有叶子节点都位于同一层,或者说根节点到每个叶子节点的长度都相同。每个节点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树原创 2021-08-12 14:02:19 · 5346 阅读 · 3 评论 -
数据结构树-->二叉堆
二叉堆1. 什么是二叉堆首先二叉堆是一个完全二叉树。它又分最大堆与最小堆1.1 最大堆特性:父节点的值都大于或等于左右孩子的值。1.2 最小堆特性:与最大堆相反,父节点的值都小于或等于左右孩子的值。2. 二叉堆的插入2.1 插入位置首先满足的完全二叉树的特性,所以我们新插入的节点是按照完全二叉树的下一个位置来插入的。我们以最小堆为例2.2 插入后"上浮"插入节点与父节点比较,如果小于父节点则插入节点与父节点交换位置,递归操作,直到找到父节点比插入节点小。结果为:最大堆的插入同原创 2021-08-12 12:07:29 · 321 阅读 · 0 评论 -
数据结构树-->红黑树
红黑树前一篇文章我们了解了平衡二叉树,也知道了平衡二叉树的缺点:大量的插入删除操作影响性能,所以产生了红黑树。首先:红黑树与平衡二叉树的目的是一样的,都是解决了二叉查找树退化为链表的问题。平衡二叉树使用的平衡因子,红黑树使用的是几个特性来达到解决二叉查找树退化链表的问题。1. 红黑树的特性:节点是黑色或者红色。根节点为黑色。每个叶子节点都是黑色(叶子节点是NIL节点)每个红色节点的两个子节点都是黑色(或从根节点到每个叶子节点的路径上不能有两个连续的红色节点)。从任一节点到其每个叶子节点的原创 2021-08-12 12:05:02 · 492 阅读 · 0 评论 -
数据结构树-->霍夫曼树
霍夫曼树1. 霍夫曼树的定义霍夫曼树又称最优二叉树。了解霍夫曼树之前先了解几个名词,节点的权:若将树中的节点赋给一个有某种含义的值,这个值称为节点的权。路径:从一个节点到另一个节点之间的分支构成两个节点之间的路径。路径的长度:路径上的分支数量。树的路径长度:从树的根到树中每一个节点的路径长度之和。节点的带权路径长度:从该节点到树根之间的路径长度与节点上权的乘积。树的带权路径长度:树中所有叶子节点的带权路径长度之和。上图是个霍夫曼树,其中。节点的权: A:7 B:5 C:2原创 2021-08-12 11:55:32 · 7777 阅读 · 3 评论 -
数据结构树-->平衡二叉树
平衡二叉树平衡二叉树又叫 AVL树前面我们介绍了二叉查找树,二叉平衡树是二叉查找树的一种,为什么会有二叉平衡树呢?这时因为二叉查找树的排序引起的,看下图。这也是一个二叉查找树,但因为数据的原因这个二叉查找树基本成了链式结构,无法达到二叉查找树的快速查找能力,这就引入了平衡二叉树。平衡二叉树在二叉查找树的基础上添加了平衡因子。1. 平衡因子平衡因子:二叉树所有节点左子树高度与右子树的高度差值的绝对值不能大于1。 只有满足这个平衡因子的二叉查找树就是一颗合格的平衡二叉树。如图就是一个合格的平衡原创 2021-08-12 11:53:20 · 1034 阅读 · 0 评论 -
数据结构树-->二叉查找树\二叉排序树
二叉查找树\二叉排序树二叉查找树是一种有序的二叉树,也叫儿叉排序树,它在二叉树的基础上添加了位置排序的规则。规则: 每颗子树的根节点值比左子树大,比右子树小。二叉查找树的缺点: 二叉查找树有了排序,但当我们的数据顺序与大小规律一致是就会发现,二叉查找树基本退化为了链表,导致达不到二叉查找树快速查找的目的。后续我们在介绍平衡二叉树的时候会解决之一问题。1. 二叉查找树的查找更具儿叉查找树的特性二叉查找树查找元素快速简单,快速:二叉查找树查找基本就是二分查找,所以快速。2. 二叉查找树的插入原创 2021-08-12 11:48:31 · 2279 阅读 · 0 评论 -
数据结构树-->二叉树
二叉树在数据结构树中我们最常用的就是二叉树,二叉树的分类又有很多种,利用好二叉树我们可以快速的从大数据量中找到我们所需的数据。1. 什么是二叉树前面我们介绍了树,二叉树顾名思义就是每个数据节点最多有两个叉,也就是每个数据节点最多是有两个孩子节点。特点:每个节点最多有两个孩子节点。即使节点没有孩子节点,新添加的节点也要区分是该节点左孩子或者右孩子。2. 满二叉树特点:树中所有的非叶子节点都有左孩子和右孩子。所有叶子节点都在同一层上。3. 完全二叉树定义: 对一个有n个节点的二叉树,原创 2021-08-12 11:39:43 · 611 阅读 · 0 评论 -
数据结构树-->树基础
1. 定义树 是 n(n>=0) 个有限节点组成的具有层次关系的集合,当 n=0 时称为空树。树很多人有很多定义,其实满足树的特点就称之为树。特点:有且仅有一个特定的节点称为根节点。每个节点有0个或多个子节点。每一个非根节点有且只有一个父节点。除根节点外,每个子节点可以分为多个不想交的子树。如图:如图明确几个名词:节点:树的所有点称之为节点,如上图的圆圈。根节点,头部第一个节点。叶子节点: 4 5 6 7 处于树的末端,称为叶子节点。孩子节点: 节点关系, 4节点属于2原创 2021-08-12 11:34:19 · 626 阅读 · 0 评论