algorithm
  • README
  • 算法题目
    • Page 1
  • 算法基础
    • 堆(大/小顶堆 、优先队列)
      • swift
      • js
      • C++
    • 哈希表(HashTable)
      • 线性探测
        • 稠密哈希表
        • 密集探测哈希表vs线性探测哈希表
      • C拉链法
        • 拉链法是否需要根据负载因子扩容?
      • set的实现
      • map的实现
    • 二叉树
      • 类型
        • AVL树和红黑树的关系与区别比较
      • 存储方式
      • 遍历
        • 前中后序遍历(深度)
          • 递归方式
          • 迭代法
        • 层次遍历(广度)
      • 二叉搜索树
        • 基本概念
        • 代码实现
      • AVL树
        • 基本概念
        • 代码实现
        • 疑问
          • AVL为什么LL的时候右转呢?
          • AVL树中的LR的情况
          • AVL树的调整
          • 删除节点的逻辑
      • 红黑树
        • 基本概念
        • 代码实现
        • 疑问
          • 红黑树和AVL的关系与区别
          • 红黑树和哈希表的关系与区别
          • 为什么有红黑树,比AVL优势在哪里?
    • 运算符
      • 交换两个数(不用临时变量)
  • leetcode结构
    • Javascript
      • 优先队列
    • C++
  • 公司面试题目
    • 汇丰银行
      • 跑步同一个脚印问题
      • 销售系统问题
Powered by GitBook
On this page
  1. 算法基础
  2. 二叉树
  3. 红黑树

基本概念

Previous红黑树Next代码实现

Last updated 7 months ago

红黑树是一种自平衡的二叉搜索树,它具有以下特性:

  1. 节点颜色:每个节点是红色或黑色。

  2. 根节点:根节点始终是黑色。

  3. 叶子节点:所有叶子节点(NIL或空节点)都是黑色。

  4. 红色节点:如果一个节点是红色,则它的两个子节点都是黑色(即没有两个红色节点相连)。

  5. 黑色高度:从任何节点到其每个叶子节点的所有路径都包含相同数量的黑色节点。

操作

红黑树支持以下基本操作,并保持自平衡特性:

  • 插入:在插入新节点后,可能会违反红黑树的性质,需要通过旋转和重新着色来修复。

  • 删除:删除节点后,同样可能会违反性质,需要进行旋转和重新着色以恢复红黑树的特性。

  • 查找:查找操作与普通二叉搜索树相同,时间复杂度为 O(log n)。

性能

由于红黑树是自平衡的,所有基本操作(插入、删除、查找)的时间复杂度都为 O(log n),因此在处理大量数据时,红黑树的性能非常优越。