对红黑树的初步了解

平衡的二叉树的查找速度最快的情况是O(logn),但是它在不平衡的时候最坏的情况是O(n)

2-3树能够保持树的平衡性,但是因为存在3-结点,它并不是标准的二叉树。

红黑树就是能把二叉树和2-3树算法的优点都结合起来构建一个完美平衡的二叉树。它不管是插入、查找还是删除最坏的情况都是O(logn).

红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。
通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。

可以用红黑二叉树来实现2-3树,2-3树由于多了一个3-结点,它并不是标准的二叉树,但是可以利用红黑树背后的基本思想来实现:用标准的二叉树(全部都是有2-结点)来表示2-3树,只需要增加一下额外信息,例如:2-3树的3-结点是不符合二叉树的,所以3-结点拆分成2个2-结点,用一条“红链”把这拆分后的两个2-结点连接起来,而2-3树中其他普通的2-结点之间就用“黑链”来连接。

红黑树其实就是含有红黑链并满足下列条件的二叉树

  1. 红链均为左链接。
  2. 没有任何一个结点是同时和两条红链连接的。
  3. 任意空链接到根节点过程中的黑链数量是相同的。

红黑树在插入元素的时候有可能会出现三种破坏红黑树平衡性的情况:

像二叉查找树向一颗红黑树中插入一个新建会在树的底部新增一个结点。但总是用红链接将新节点和他的父节点相连。

 1.向底部的2-结点插入新建

如果指向新节点的是父节点的左链接,那么父节点就直接成为了一个3-结点;如果指向新结点的是父节点的右链接,这是一个错误的3-结点,但一次左旋转就能够修正它。

扫描二维码关注公众号,回复: 3122666 查看本文章

2.向一颗双键树(一个3-结点)插入新建

这种情况又可以分为三种子情况:新建小于树中的两个键,在两者之间,或是大于树中的两个键。每种情况都会产生一个同时连接到两条红链的结点,而我们的目标就是修正这一点。

猜你喜欢

转载自blog.csdn.net/weixin_41676901/article/details/82556092