多路查找树之2-3-4树和B树 让编程改变世界 Change the world by program 由2-3树到2-3-4树 ...... 省略,具体请看视频讲解 ...... B树 一个m阶的B树具有如下属性: 如果根结点不是叶结点,则其至少有两棵子树 每一个非根的分支结点都有k-1个元素(关键字)和k个孩子,其中k满足:⌈m/2⌉ <= k <= m 所有叶子结点都位于同一层次 每一个分支结点包含下列信息数据: n, A₀, K₁, A₁, K₂, A₂, K₃, A₃-- 其中K为关…
在前面专题中讲的BST.AVL.RBT都是典型的二叉查找树结构,其查找的时间复杂度与树高相关.那么降低树高自然对查找效率是有所帮助的.另外还有一个比较实际的问题:就是大量数据存储中,实现查询这样一个实际背景下,平衡二叉树由于树深度过大而造成磁盘IO读写过于频繁,进而导致效率低下.那么如何减少树的深度(当然不能减少查询数据量),一个基本的想法就是: 1.  每个节点存储多个元素 (但元素数量不能无限多,否则查找就退化成了节点内部的线性查找了). 2.  摒弃二叉树结构,采用多叉树 (由于节点内元素…
B 树 B树与B+树 一:定义 B树(B-树)是一种平衡的多路查找树.-3树和2--4树都是B树的特例.节点最大的孩子数组称为B树的阶(order),因此,-3树是3阶B树,--4树是4阶B树. 二:属性 一棵最小度为t的B树是满足如下四个条件的平衡多叉树: 1.每个节点最多包含2t−1个关键字:除根节点外的每个节点至少有t−1个关键字(t≤),根节点至少有一个关键字: 2.一个节点u中的关键字按非降序排列:u.key1≤u.key2≤…u.keynu.key1≤u.key2≤…u.keyn:…
1.二叉搜索树 1.1定义 是一棵二叉树,每个节点一定大于等于其左子树中每一个节点,小于等于其右子树每一个节点 1.2插入节点 从根节点开始向下找到合适的位置插入成为叶子结点即可:在向下遍历时,如果要插入的值比节点的值小,则向节点的左子树遍历,大于等于则向右子树遍历,如此循环. 1.3删除节点 删除节点x有3种情况: 1.x是叶子结点,则直接删除: 2.x只有一棵子树(左子树或者右子树),则直接将x的父结点指向x的孩子,再删除x节点,如果x是根结点,则要更新x的孩子为树根: 3.x有两棵子树,则…
HTTP协议漫谈   简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解. HTTP的定义和历史 在一个网络中.传输数据需要面临三个问题: 1.客户端如何知道所求内容的位置? 2.当客户端知道所求内容的位置后,如何获取所求内容? 3.所求内容以何种形式组织以便被客户端所识别? 对于WEB来说,回答上面三种问题分别采用三种不同的技术,分别为:统一资源定位符(URIs),…
一.多路查找树的背景 前面所讨论的查找算法都是在内存中进行的,它们适用于较小的文件,而对于较大的.存放在外存储器上的文件就不合适了,对于此类大规模的文件,即使是采用了平衡二叉树,在查找效率上仍然较低. 如果要操作的数据集非常大,大到内存已经没办法处理了,这种情况下,对数据的处理需要不断从硬盘等存储设备中调入或调出内存页面.一旦涉及到这样的外部设备,关于时间复杂度的计算就会发生变化,访问该集合元素的时间已经不仅仅是寻找该元素所需比较次数的函数,必须考虑对硬盘等外部存储设备的访问时间以及将会对该设备…
B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引. B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的. 在讲B+树之前必须先了解二叉查找树.平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来. 二叉查找树 二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值. 如下图所示就是一棵二叉查找树,  对该二叉树的节点进行查找发现深度为1的节点的查找次数…
本文参考自<大话数据结构> 计算机中数据的存储 一般而言,我们都是在内存中处理数据,但假如我们要操作的数据集非常大,内存无法处理了,在这种情况下对数据的处理需要不断地从硬盘等存储设备中调入或调出内存页面. 对外存设备的读写,效率并不乐观.为了降低对外存设备的访问次数,我们需要新的数据结构来处理这个问题.之前学习过的树,一个结点可以有多个孩子,但它自身只能存储一个元素.二叉树限制更多,只有两个孩子结点.在元素非常多时,要么树的度非常大(结点拥有子树的个数的最大值),要么树的高度非常大,如果我们要…
多路查找树 二叉树和B树 二叉树的问题分析 二叉树操作效率高 二叉树需要加载到内存,若二叉树的节点多存在如下问题: 问题1:构建二叉树时,需多次进行I/O操作,对与速度有影响 问题2:节点海量造成二叉树的高度很大,会降低操作速度 多叉树 在二叉树中,每个节点有数据项,最多有两个子节点.如果允许每个节点可以有更多的数据线和更多的子节点,就是多叉树(multiway tree) 多叉树通过重新组织节点,减少树的高度,能对二叉树进行优化 B树的基本介绍 B树通过重新组织节点,降低树的高度,并且减少I/…
一.概念 1.多路查找树(multi-way search tree):所谓多路,即是指每个节点中存储的数据可以是多个,每个节点的子节点数也可以多于两个.使用多路查找树的意义在于有效降低树的深度,从而降低查找深度. 2.2-3树:2-3树是指满足以下条件的多路查找树:1)每个节点可以是2节点(包含一个元素和2个子节点)或者3节点(包含两个元素和3个子节点);2)一个2节点要么没有子节点,要么有两个子节点,不存在只有一个子节点的情况;3)一个3节点同理,要么没有子节点,要么有3个子节点,且3节点的…