二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分

文章目录

    • 1、二叉树(Binary Tree)
    • 2、二叉搜索树(Binary Search Tree)
    • 3、平衡二叉树(AVL Tree)
    • 4、红黑树(Red-Black Tree)
    • 5、B树(Balance tree)
    • 6、B+树(B+ tree)

1、二叉树(Binary Tree)

二叉树是每个节点最多有两个子节点的树。
二叉树的叶子节点有0个字节点,二叉树的根节点或者内部节点有一个或者两个字节点。

二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分_第1张图片

2、二叉搜索树(Binary Search Tree)

二叉搜索树, 又叫 二叉查找树,

它或者是一棵空树,或者是具有下列性质的二叉树:

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉搜索树。
    二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分_第2张图片

一个印象比较深的二叉搜索树就是问手机号。
假设你遇到一个美女想问他手机号,但是美女一般不告诉你数字。她只回答是否题。
那么你可以问她不超过14个问题就可以知道她手机号了。

假定手机号最大值是1000 0000 0000
是否大于500 0000 0000,开始分叉。
如果大于500 0000 0000,那么是否大于750 0000 0000。。。
如果小于500 0000 0000,那么是否大于250 0000 0000。。。

以此类推,这就是一个典型的二叉搜索树。看起来很神奇,其实源自于一种巧妙的数学。

3、平衡二叉树(AVL Tree)

平衡二叉树 全称叫做 平衡二叉搜索(排序)树,简称 AVL树。

AVL 什么意思?
AVL 是大学教授 G.M. Adelson-Velsky 和 E.M. Landis 名称的缩写,他们提出的平衡二叉树的概念,为了纪念他们,将 平衡二叉树 称为 AVL树。

AVL树本质上是一颗二叉查找树,

AVL树的特性:

  • 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,
  • 左右两个子树 也都是一棵平衡二叉树。

在AVL树中,任何节点的两个子树的高度最大差别为 1 ,所以它也被称为平衡二叉树 。

如下图:
根节点左边高度是3,因为左边最多有3条边;右边高度而2,相差1。
根节点左边的节点50的左边是1条边,高度为1,右边有两条边,高度为2,相差1。
二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分_第3张图片

4、红黑树(Red-Black Tree)

红黑树是一种含有红、黑结点,并能自平衡的二叉查找树,其性质如下:

1、每个结点或是红色的,或是黑色的
2、根节点是黑色的
3、每个叶结点(NIL)是黑色的
4、如果一个节点是红色的,则它的两个儿子都是黑色的。
5、对于每个结点,从该结点到其叶子结点构成的所有路径上的黑结点个数相同。

二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分_第4张图片

5、B树(Balance tree)

B树,也叫 B tree、B-树、B_树。

B树是一种平衡的多路查找树、m阶树 (m>=3)

B树的定义:

1、根结点至少有两个子节点;

2、每个非叶子节点(根节点除外)最少有m/2个子节点,即内部节点的子节点个数最少也有m/2个。

3、根节点最少有两个子节点。

4、有k个关键字(关键字按递增次序排列)的非叶结点恰好有k+1个孩子。

5、所有叶子节点在同一层,即所有叶子几点高度一致。

如下图(B树的内部节点可以存放数据,类似ZK的中间节点一样。B树不是每个节点都有足够多的子节点)

二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分_第5张图片

6、B+树(B+ tree)

B+树是从B树的变体。
跟B树的不同:

1、B+树非叶子节点不存放数据,只存放keys(索引数据)。
2、B+树的叶子节点之间存在指针相连,而且是单链表。

如下图(其实B+树上二叉搜索树的扩展,二叉搜索树是每次一分为二,B树是每次一分为多)

现代操作系统中,磁盘的存储结构使用的是B+树机制,mysql的innodb引擎的存储方式也是B+树机制

二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分_第6张图片

你可能感兴趣的:(数据结构)