数据结构中各种树的定义理清--学习笔记

B树 B+树等各种树的定义。

注:很多文章将B树误称为B-(减)树,这可能是对其英文名“B-Tree”的误解(更有甚者,将B树称为二叉树或二叉搜索树)。特别是与B+树一起讲的时候。想当然的认为有B+(加)树就有B-(减)树,实际上B+树的英文名是“B+-Tree”。

二叉搜索树(Binary Sort Tree)又称二叉查找树,亦称二叉排序树。定义为:一棵树要么是空树,要么是具有下列性质的二叉树:

1)若他的左子树不为空,则左子树上所有结点的值均小于他的根结点的值;

2)若他的右子树不为空,则右子树上所有结点的值均大于他的根结点的值;

3)他的左子树和右子树也分别是二叉排序树

平衡二叉树的定义为:一棵树要么是空树,要么是具有下列性质的二叉树:他的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。

AVL树(Adelson-Velskii和Landis)带有平衡条件的二叉查找树

红黑树,具有以下性质的二叉排序树:

1)所有节点都着色,且要么为红,要么为黑

2)红节点的儿子必须是黑节点

3)空节点认为是黑节点

4)根节点是黑节点

5)根节点到任意叶子节点的黑节点个数相同

B-树:是一种平衡的多路查找树。

一棵m阶B-树或为空树,或为满足下列特性的m叉树:

1)树中每个结点至多有m个子结点

2)若根结点非叶子结点的时候,至少有2个子结点

3)除根之外的所有非终端结点至少有m/2(向上取整)

4)二叉查询树和平衡二叉树特性

5)所有的叶子结点都出现在同一层次上,且不带任何信息(可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)

B+树:是应文件系统所需而出的一种B-树的变型树。

一棵m阶B+和m阶的B-树的差异在于:

1)有n棵子树的结点中含有n个关键字。

2)所有叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3)所有的非终端结点可以看成是索引部分,结点中仅含有其子树(跟结点)中最大(或最小)的关键字。

带有顺序访问指针的B+Tree

一般在数据库系统或文件系统中使用的B+Tree结构都在经典B+Tree的基础上进行了优化,增加了顺序访问指针。

数据结构中各种树的定义理清--学习笔记_第1张图片

在B+Tree的每个叶子节点增加一个指向相邻叶子节点的指针,就形成了带有顺序访问指针的B+Tree。做这个优化的目的是为了提高区间访问的性能,例如图4中如果要查询key为从18到49的所有数据记录,当找到18后,只需顺着节点和指针顺序遍历就可以一次性访问到所有数据节点,极大提到了区间查询效率。

你可能感兴趣的:(数据结构中各种树的定义理清--学习笔记)