红黑树(含二叉树、2-3-4树)解释

二叉树

定义

1.左子树上所有结点的值均小于或等于它的根结点的值。
2.右子树上所有结点的值均大于或等于它的根结点的值。
3.左、右子树也分别为二叉排序树。

运用了二分查找的思想[复杂度O(logn)],查找所需的最大次数等同于二叉查找树的最大高度。

缺陷

多次插入新节点容易导致不平衡,使查找性能大打折扣,几乎变成了线性查找[复杂度O(n)]如下图:

假设初始的二叉查找树只有三个结点,根结点值为9,左孩子值为8,右孩子值为12
在这里插入图片描述
接下来我们依次插入如下五个结点:7,6,5,4,3。依照二叉查找树的特性,结果会变成什么样呢?
在这里插入图片描述

2-3-4树

定义

1.所有的叶子节点都拥有相同的深度
2.节点只能是2-节点,3-节点,或者4-节点

  • 2节点 包含一个元素的节点,有两个子节点
  • 3节点 包含两个元素的节点,有三个子节点
  • 4节点 包含三个元素的节点,有四个子节点
    所有节点都有至少两个子节点或没有子节点

子节点的定义:

  • 2节点 左子树所有元素小于key1,右子树所有元素大于key1
  • 3节点 左子树所有元素小于key1,中间子树所有元素大key1小于key2,右子树大于key2
  • 4节点 左子树所有元素小于key1,第二个子树所有元素大于key1小于key2,第三个子树所有元素大于key2小于key3,右子树所有元素大于key3
    在这里插入图片描述

添加操作

在这里插入图片描述
添加如果出现需要分裂的情况,分裂出的元素首先和父级合并,如果父级已经是4节点那么将父级分裂,递归操作。
234树的生长全部都是从叶子节点进行生长的,从叶子节点进行分裂向上延伸

为什么要提到234树呢,因为234树和红黑树是完全等价的,在程序中实现234树比较繁琐,所以使用了红黑树来代替。

红黑树

定义

红黑树是一种自平衡的二叉查找树。除了符合二叉查找树的基本特性外,它还具有下列附加特性:
1.结点是红色或黑色。
2.根结点是黑色。
3.每个叶子结点都是黑色的空结点(NIL结点)。
4 每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点)
5.从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。(如果一个结点存在黑子结点,那么该结点肯定有两个子结点)

这些规则保证了红黑树的自平衡。红黑树从根到叶子的最长路径不会超过最短路径的2倍。

下面这棵树就是一颗典型的红黑树
在这里插入图片描述
红黑树通过旋转和变色调节自平衡

插入操作

红黑树插入

删除操作

在这里插入图片描述
注:红黑树插入和删除两张思维导图转自博主安卓大叔

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值