面试知识点之《红黑树》

【定义】红黑树是一种自平衡二叉查找树,它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。

红黑树属于平衡二叉树。说它不严格是因为它不是严格控制左、右子树高度或节点数之差小于等于1。

但红黑树高度依然是平均log(n),且最坏情况高度不会超过2log(n)

【两者区别】红黑树与AVL树(自平衡二叉树)的相同点与区别?
       (1)红黑树和AVL树类似都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能

       (2)红黑树和AVL树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是AVL树中的非常严格的平衡。

                 AVL树的复杂比起红黑树来说更加复杂。红黑树是真正的变态级数据结构。

【特性】红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是RedBlack

               通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。

                前面说了,红黑树,是一种二叉查找树,既然是二叉查找树,那么它必满足二叉查找树的一般性质

              红黑树是通过节点分为红、黑两种颜色并根据一定的规则确保在一定程度上是平衡的,从而保证在红黑树中查找、删除、插入操作都只需要O(logk)的时间。

在STL(标准模板库)中set和multiset都是基于红黑树实现的。
(1)set、multiset采用平衡二叉树完成,set中的元素不允许重复,multiset允许重复;
(2)set、multiset不提供直接存取元素的任何函数操作;

红黑树的性质:
1)  红黑树节点要么是红节点、要么是黑节点;
2)  根节点为黑节点
3)  叶节点(空节点)为黑节点
4)  每个红节点的两个子节点是黑节点
5)  对于每个节点,从该节点到其子孙节点的所有路径上包含相同数目的黑节点
 红黑树的时间复杂度:
1.在一棵二叉查找树上,执行查找、插入、删除等操作的最好情况时间复杂度为O(lgn)。 

因为,一棵由n个结点,随机构造的二叉查找树的高度为lgn,所以顺理成章,一般操作的执行时间为O(lgn)。

2.但若是一棵具有n个结点的线性链,则此些操作最坏情况运行时间为O(n)
而红黑树,能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)。

    原文作者:算法小白
    原文地址: https://blog.csdn.net/paullink520/article/details/39482247
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞