数据结构
文章平均质量分 82
·Jormungand
我会把这个不完美的故事 变成我所期望的样子
展开
-
数据结构 | B树、B+树、B*树
文章目录搜索结构B树搜索结构如果我们有大量的数据需要永久存储,就需要存储到硬盘之中,但是硬盘的访问速度远远小于内存,并且由于数据量过大,无法一次性加载到内存中。此时,就可以考虑将数据存储在硬盘中,而数据的地址则加载到内存中,通过某种搜索结构进行存储,使用时只需要通过该结构查找到地址,在通过地址去找到对应的数据即可。之前我博客中介绍了几种搜索结构:二叉搜索树、AVL树、红黑树、哈希、位图、布隆过滤器。考虑到查找性能以及内存消耗,其中适合这种场景的只有平衡二叉搜索树(AVL、红黑树)。但即使平衡二原创 2021-08-30 15:39:32 · 1046 阅读 · 0 评论 -
哈希 :哈希冲突、负载因子、哈希函数、哈希表、哈希桶
文章目录哈希哈希(散列)函数哈希哈希(散列)是一种数据结构,通过散列算法将元素值转换为散列值进行存储。使得元素存储的位置与元素本身建立起了映射关系,如果要查、改数据,就可以直接到对应的位置去,使得时间复杂度达到了 O(1)。哈希(散列)函数哈希函数就是建立起元素与其存储位置的映射关系。对于哈希函数来说,必须具有以下特点;哈希函数的定义域必须包括需要存储的全部关键码,而如果散列表允许有m个地址时,其值域必须在0 到m-1之间哈希函数计算出来的地址能均匀分布在整个空间中(防止产生密集的哈希冲突原创 2021-08-29 10:34:20 · 3785 阅读 · 0 评论 -
平衡树相关知识及如何判断一棵树是否平衡
文章目录概念代码实现判断一棵二叉树是否为平衡树概念平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。常见的符合平衡树的有:B树(多路平衡搜索树)AVL树(二叉平衡搜索树)红黑树 (自平衡二叉查找树),AVL树的特化代码实现判断一棵二叉树是否为平衡树从下到上判断(DFS后序遍历)fun 函数实现后序遍历+剪枝:返回值:当前节点 cur 左 / 右子树的深度差 ≤1 时:返回当前子树的深度,即 左 / 右子树的深度最大值 +1( max(原创 2021-08-03 22:50:56 · 1113 阅读 · 0 评论 -
二叉树相关知识及求深度的代码实现
文章目录树二叉树满二叉树和完全二叉树二叉树的性质代码实现求二叉树的深度树树是一种非线性的数据结构,它是由n个有限结点组成一个具有层次关系的集合。树的相关名词:根节点:没有前驱结点的结点。父节点,子节点:有 节点C 为 节点E 的前驱节点(那么 E 就是 C 的后继节点),称 C 为 E 的父节点, E 为 C 的子节点。兄弟节点:具有相同的父节点的结点互称为兄弟节点,如B,C是兄弟节点深度(高度):从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。原创 2021-08-03 22:06:28 · 675 阅读 · 1 评论 -
二叉搜索树相关知识及应用操作
文章目录概念查找二叉搜索树的第k大节点概念二叉查找树(Binary Search Tree),(又名:二叉搜索树,二叉排序树)——它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结原创 2021-08-03 19:29:18 · 579 阅读 · 0 评论 -
树状数组的相关知识 及 求逆序对的运用
文章目录树状数组概念前缀和和区间和树状数组原理区间和前缀和完整代码离散化sort函数unique函数去重erase函数仅保留不重复元素通过树状数组求逆序对树状数组概念树状数组又名二叉索引树,其查询与插入的复杂度都为 O(logN),其具有以下特征:树状数组是一种实现了高效查询「前缀和」与「单点更新」操作的数据结构。是求逆序对的经典做法。不能解决数组有增加和修改的问题。前缀和和区间和既然树状数组是为了解决前缀和问题,那么我们首先要知道什么是前缀和?要提前缀和就不得不提区间和,举个例子来原创 2021-08-02 17:22:30 · 493 阅读 · 0 评论