为什么有了二叉搜索树和二叉平衡树之后还需要红黑树?

我们先来回忆一下二叉搜索树、二叉平衡树、红黑树的特点

1、二叉搜索树

二叉搜索树的特点是:左子树的结点值比根结点值小,右子树的结点值比根结点小
在查找的过程中,是采用二分查找的思想,在正常情况下,查找的时间复杂度是O(log2N),但是有一种极端情况,就是此时的二叉树是单支树,如下图:
为什么有了二叉搜索树和二叉平衡树之后还需要红黑树?_第1张图片
此时,查找的时间复杂度为O(N),为了避免这种情况的发生,我们引申出了二叉平衡树(AVL树)

2、二叉平衡树

二叉平衡树的出现就是为了解决二叉搜索树退化成链表的情况,二叉平衡树的特点:
具有二叉搜索树的全部特点,而且每个结点的左子树与右子树的高度差不超过 1

所以二叉平衡树的最坏时间复杂度为O(log2N)。

在插入元素的过程中不断使用左旋、右旋、先左旋再右旋、先右旋再左旋等操作来满足二叉平衡树的性质(每个结点的左子树与右子树的高度差不超过 1)。
但是二叉平衡树的要求太严格,若出现频繁的插入、删除操作对二叉平衡树的性能会大打折扣,为了避免这种情况的发生,又引申出了红黑树

3、红黑树

红黑树的出现是为了解决二叉平衡树频繁的插入和删除导致的性能降低的问题。

红黑树的特点:

  1. 红黑树的根结点为黑;
  2. 红黑树的结点只有黑色和红色两种;
  3. 红黑树的叶子结点均为黑色(此处所说的叶子结点为NULL);
  4. 红黑树中红色结点的孩子必须是黑色的;
  5. 从某一结点到叶子结点的每条路径的黑色结点的个数是相同的。

红黑树的结构如下图:
为什么有了二叉搜索树和二叉平衡树之后还需要红黑树?_第2张图片
为了满足以上条件,红黑树查找的最坏时间复杂度为O(log2N)。
不过与二叉平衡树不同的是:红黑树的插入与删除不会像二叉平衡树那样频繁的破坏红黑树的规则,从而不需要进行频繁的调整。

4、总结

二叉平衡树是为了解决二叉搜索树退化为链表的情况,红黑树是为了解决二叉平衡树在插入和删除等操作需要频繁调整的情况。

你可能感兴趣的:(知识点汇总)