【数据结构】红黑树小结

红黑树是一种二叉搜索树。

性质

  • 一颗红黑树满足以下五个红黑性质

    1. 每个结点或者是红色或者是黑色。
    2. 根结点是黑色的。
    3. 每个叶结点是黑色的。(这个叶节点是树尾端的黑色节点nil)
    4. 若一个结点是红色的,它的两个子结点必须是黑色的。
    5. 对于任意一个结点,从该结点到它的每一个后代叶结点的简单路径上,都包含相同数目的黑色结点。
  • 一棵有n个内部结点的红黑树,它的高度至多为2lg(n+1)。也就是说,在一棵红黑树中不会有任何一条路径的长度会超过其他路径长度的两倍。

操作复杂度

红黑树的查找、插入、删除操作可以保证在最坏的情况下复杂度也为O(lgn)。

结点结构

struct RB_node{
    RB_node *left, *right, *parent;
    value_type key;
    color_type color;
}

相对于AVL树的优点

  • 两种树的各种动态集合操作的平均复杂度都为O(lgn)。
  • 由于AVL树的平衡度高于红黑树,所以AVL树的查找操作相对更快。
  • 由于AVL树是严格平衡的,所以在插入和删除时更容易造成不平衡的情况,并且在最坏情况下,需要旋转从引起不平衡的结点node到root整条路径上的所有节点来恢复平衡性,复杂度为O(lgn)。而对于红黑树来讲,它只需最多两次旋转就可以恢复平衡,复杂度为O(1)。所以对于插入和删除操作,红黑树的性能是明显优于AVL树的。
  • 所以在整体的性能上,红黑树是优于AVL树的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值