常见的几种树小知识

2020-04-15  本文已影响0人  飞翃荷兰人

这篇文章的出现,主要是因为在复习数据库的时候,涉及到了b树和b+树,再加上之前复习多路复用的时候也会涉及到红黑树,所以就想把这几种树统统总结一下,做一个知识点的概括。

1. 二叉查找树

要了解B树,B+树和红黑树首先要了解二叉查找树,二叉查找树(英语:Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:

  • 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
  • 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
  • 任意节点的左、右子树也分别为二叉查找树;
  • 没有键值相等的节点。
mOk8AA.png

中序遍历二叉查找树可得到一个节点值的有序序列。
二叉搜索树在多次插入后可能会退化成一个线性链表。

2. B树

一颗m阶的B树定义如下::

3个子节点,2个键的B树
2.1 模拟查找过程

假如说我们要查找10这个数字:

3. B+树

B+树的定义各有不同,一种定义方式是关键字个数和孩子结点个数相同。这里我们采取维基百科上所定义的方式,即关键字个数比孩子结点个数小1,这种方式是和B树基本等价的。

B+树的性质:

(2),(5)是B+树用来做INNODB索引数据结构的重要原因。


3阶B+树

查找原理和上面B树的类似,但是要记住。只有叶子节点存储了真实数据,内部节点再真实也只是存储了索引而已。

4. 红黑树:

1. 是一种自平衡二叉查找树(红黑树严格来说并不遵守平衡二叉树的定义,其左右子树的高度差可以超过1), 可以在O(logn)时间内完成查找,插入和删除,这里的n是树中元素的数目。
2. 红黑树调整的方法有两种:变色和旋转,旋转又分为左旋和右旋。
2. 红黑树比AVL树的优势在哪?
B树B+树这么好,为什么还要用红黑树

一般都是在内存操作或者数据量不大的时候采用红黑树,因为红黑树没有索引节点,会节省内存。如果数据量很大,就像是数据库那样,还是需要使用b+树的。

上一篇 下一篇

猜你喜欢

热点阅读