n叉树

更新时间:2022-08-25 18:49

树家族是为了实现方便快捷的查找而存在的。树的高度是命中查找的一个不可抗拒的时间下限。在一定的数据条件下,树的高度和宽度是互相制约的。(就像一定面积下,矩形的长和宽是互相制约的)而树家族中最简单的二叉树,尽管易于实现,却不能有实际的价值。其最最令人发指的是二叉树的高度太高。n叉树的提出和实现解决了二叉树的不足,典型的n叉树有:2-3-4树/红黑树和B树。

定义

二叉树中每个结点有一个数据项,最多有两个子节点,如果允许树的每个节点可以有两个以上的子节点,那么这个树就称为n阶的多叉树,或者称为n叉树。

性质

分类

典型的n叉树有2-3-4-Tree和B-Tree两种。

B树

B树(B-tree)是有Bayer和McCreight在1972年提出的数据结构。B树索引是数据库中存取和查找文件(称为记录或键值)的一种方法,应用于磁盘读取方面。

B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二叉查找树不同,B树为系统最优化大块数据的读和写操作。B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。普遍运用在数据库和文件系统。

B树的一些性质

根据Knuth's的定义,n阶B树(a B-tree of order n)是具有以下性质:

注意:根结点为叶子节点,整棵树只有一个根节点。

2-3-4树

2-3-4树在计算机科学中是阶为4的B树。大体上同B树一样,2-3-4树是可以用做字典的一种自平衡数据结构。它可以在O(logn)时间内查找、插入和删除,这里的n是树中元素的数目。2-3-4树在多数编程语言中实现起来相对困难,因为在树上的操作涉及大量的特殊情况。红黑树实现起来更简单一些,所以可以用它来替代。

2-3-4树把数据存储在叫做元素的单独单元中。2-3-4树,就是有2个子女,3个子女,或4个子女的节点,这些含有2、3、或4个子女的节点就构成了我们的2-3-4树。所以,它们组合成节点,每个节点都是下列之一:

每个子节点都是(可能为空)一个子2-3-4树。根节点是其中没有父节点的那个节点;它在遍历树的时候充当起点,因为从它可以到达所有的其他节点。叶子节点是有至少一个空子节点的节点。同B树一样,2-3-4树是有序的:每个元素必须大于或等于它左边的和它的左子树中的任何其他元素。每个子节点因此成为了由它的左和右元素界定的一个区间。如图1所示(你可以看到,图中这棵2-3-4树是由2-结点,3-结点,4-结点元素组成的):

实现

尽管2-3-4树的流行和其简单实现(红黑树)已经逐渐被大家接纳,但是对于大量数据来说,用红黑树实现查找是不现实的。MySQL和Berkeley DB都是基于B树原理而建立数据库的。B树是一种可实现的平衡多路查找树。此次对B树的实现进行举例。

B树

B树的查找

B树的插入

伪代码如下:

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}