基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)

本文主要介绍几种比较重要的树形结构:
① 二叉排序树 ② 平衡二叉树 ③ B树 ④ B+树
⑤ 伸展树 ⑥ 红黑树

分为三个问题来描述每种树:
① 是什么?主要应用? ② 有什么特点(性质)? ③ 基于它的操作?

Ⅰ 二叉排序树(BST):
二叉排序树又称为二叉查找树,是一种高效的数据结构。是一种特殊的二叉树。
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
特点(性质):

《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

注意:要先判断题目给定的二叉排序树是否为空树!

二叉排序树采用二叉链表作为存储结构:
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
二叉链表分为3个域:左孩子、右孩子和数据域。

基于二叉排序树的算法:
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

详细解释以及需要注意的地方:

关于比较复杂的删除的最后一种情况,也就是待删结点既有左子树又有右子树的情况:
(1)中序遍历,找出待删结点的直接前驱和直接后继结点。
(2)可以用前驱结点和后继结点中的任何一个来替换待删结点。
(3)过程是先将待删结点换成前驱(后继)结点,再将原来前驱(后继)结点删除,删除的过程转化成了较简单的前两种情况。

性能分析:动态查找效率高
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

Ⅱ 平衡二叉树 (AVL):
由于二叉排序树的结点分布不均衡,导致会出现最坏时间复杂度,所以经过改进产生平衡二叉树。平衡二叉树不受输入序列和插入结点的影响,始终保持平衡状态。

平衡因子:BF( Node) 表示结点的平衡因子
BF( Node) = Node的右子树高度 – Node的左子树高度 。
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
如图,是一个AVL的例子,其中圆圈里边的数字代表BF,外边的数字代表Node真正的值。有n个结点,树的高度为《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》,时间复杂度为《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

当经过插入或者删除操作破坏了平衡二叉树的平衡之后,需要通过一系列操作来调整使其依旧保持平衡。

《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

1.LL型详解:
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

同上,对于RL类型,采用相同的分析方法,不同之处在于RL类型先顺时针旋转,再逆时针旋转。

在从0创建平衡二叉树的过程中,基于插入算法,判断是哪种插入类型的时候是根据 | BF(Node) |=2的结点来判断的。

平衡二叉树的删除比较麻烦,待更。

Ⅲ B树
B树不是二叉树而是树,是一种多路平衡查找树,即树的分支多于二叉且所有叶子结点在同一层上。B树在文件系统和数据库系统中使用较多,适用于组织动态的索引结构。
用m来表示B树的阶,即所有结点中拥有孩子最多的那个结点的孩子总数。
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
以上是一个B树的例子,在上图中,蓝色框体中标记的数字表示含有元素的个数。
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
综上可得:整个B树可以看成一个递增序列,结点左边的数一定小于结点本身,结点右边的数一定大于结点本身。

《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

关于key在叶子结点,直接删的过程,又分为三种情况。
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》
旋转指的是,将待删的结点删除后,取右兄弟结点最小值上移,将原父结点放在已删结点的位置,即逆时针旋转。或者将左兄弟节点的最大值上移,将原父结点放在已删结点的位置,即顺时针旋转。

Ⅳ B+树
B树的变种,应用在多种文件系统中。
《基于树的查找(二叉排序树、平衡二叉树、B树、B+树、伸展树和红黑树)》

上图表示简单的B+树,从图中可以看出,所有的关键字都会出现在叶子结点中,上层关键字是下层最大值的复写(也可以是最小值的复写)。
查找的方法:
(1)可以从最小关键字起按顺序查找
(2)可以从根结点开始随机查找

关于伸展树、红黑树、以及平衡二叉树的删除、待更!

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/hqm12345qw/article/details/52129886
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞