一、二叉排序树(BST)
1、二叉排序树或者是空树,或者是满足如下性质的二叉树:
(1)若它的左子树不空,则左子树上所有关键字的值均小于根关键字的值;
(2)若它的右子树不空,则右子树上所有关键字的值均大于根关键字的值;
(3)左右子树又各是一棵二叉排序树
由二叉排序树的定义可以知道,如果输出二叉排序树的中序遍历序列,则这个序列是递增有序的。
二、平衡二叉树(AVL)
1、平衡二叉树又称AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。
2、对
三、B树
3.1、B树的基本概念
1、前言:
动态查找树主要包括:二叉查找树,平衡二叉树,红黑树,B树,B-树,查找的时间复杂度就为
O
(
l
o
g
2
N
)
O\left ( log_{2}N\right )
O(log2N),通过对数就可以发现降低树的深度就会提高查找效率。B树是为了存储设备或磁盘而设计的一种平衡查找树。
2、B即Balanced,平衡的意思。B树是一种树状数据结构,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。
3、一棵m阶的B树,特性如下:
(1)每个结点最多有m棵子树;
(2)除根节点外,其它每个分支节点至少有
[
m
/
2
]
[m/2]
[m/2]棵子树;
(3)根节点至少有两棵子树(除非B树只包含一个节点)
(4)所有叶节点在同一层上,且不包含任何信息;
(5)有
j
j
j个子树的非叶节点恰好有
j
−
1
j-1
j−1个关键码,关键码按递增次序排列。
3.2、B-树的基本概念
B-树就是B树。
3.3、B+树的基本概念
1、B+树是B-树的变体,也是一种多路搜索树。B+树把数据都存储在叶结点,而内部结点只存关键字和孩子指针,因此简化了内部结点的分支因子,B+树遍历也更高效,其中B+树只需所有叶子结点串成链表这样就可以从头到尾遍历,其中内部结点并不存储信息,而是存储叶子结点的最小值作为索引。
2、差别:
(1)在B+树中,具有n个关键字的结点含有n个分支;而在B-树中,具有n个关键字的结点含有n+1个分支
(2)非叶子结点的关键字都不会保存数据,只会用来索引,并且所有数据都会保存在叶子结点
(3)所有的叶子结点包含所有关键字信息以及指向关键字记录的指针,关键字自小到大顺序连接。
3、为什么说B+树比B树更适合做操作系统的数据库索引和文件索引?
(1)B+树的磁盘读写的代价更低
B+树内部结点没有指向关键字具体信息的指针,这样内部节点相对B树更小
(2)B+树的查询更加的稳定
因为非终端结点并不是最终指向文件内容的节点,仅仅是作为叶子节点中关键字的索引。这样所有的关键字的查询都会走一条从根节点到叶子节点的路径。所有的关键字查询长度都是相同的,查询效率相当。
3.4、B-树的查找
3.5、B-树的插入和删除
参考链接1:https://blog.csdn.net/fhy569039351/article/details/82976842
参考链接2:https://www.cnblogs.com/guohai-stronger/p/9225057.html