IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【数据结构】红黑树 -> 正文阅读

[数据结构与算法]【数据结构】红黑树

概述

RBT,RedBlackTree

应用场景

在JDK1.8的HashMap中,为了解决过度哈希冲突带来的长链表,会将链表转为红黑树;Linux底层的CFS进程调度算法中,vruntime利用红黑树来进行存储;多路复用技术的Epoll的核心结构也是红黑树+双向链表。

性质

  1. 每个节点或是红色的,或是黑色的。
  2. 根节点是黑色的。
  3. 每个叶子节点(NIL)是黑色的。
  4. 如果一个节点是红色的,则它的两个子节点都是黑色的。
  5. 对每个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。

引理

一棵有n个内部节点的红黑树的高度至多为 2 lg ? ( n + 1 ) 2\lg(n+1) 2lg(n+1)

证明

当节点都为黑色时,该树的节点数最少。
若bh(black-height)为黑高,则用归纳法:

  • bh=0时n=0
x (NIL)
  • bh=1时n=1
x
NIL
NIL
  • bh=2时n=3
x
node
node
NIL
NIL
NIL
NIL
  • bh=3时n=7
x
node
node
node
node
node
node
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL

因此,以x为根的子树至少包含 2 b h ( x ) ? 1 2^{bh(x)}-1 2bh(x)?1个内部结点。
设h为树的高度,则根据性质4,从根到叶节点(不包括根节点)的任何一条简单路径上都至少有一半的节点为黑色,所以根的黑高至少为 h 2 \frac h2 2h?,于是有 n ≥ 2 h 2 ? 1 n\ge2^{\frac h2}-1 n22h??1,即 h ≤ 2 log ? 2 ( n + 1 ) h\le2\log_2(n+1) h2log2?(n+1)

旋转

RIGHT-ROTATE(X) -->
<-- LEFT-ROTATE(Y)
P
X
Y
a
b
c
P
Y
a
X
b
c

插入

设插入节点为C

  1. 根节点:C涂黑
  2. 父黑:无操作
  3. 父红
    1. 叔红:叔、父涂黑,祖涂红,以祖递归
      1. LAST
      GP
      P
      C
      NIL
      U
      NIL
      NIL
      NIL
      NIL
      1. NOW
      GP
      P
      C
      NIL
      U
      NIL
      NIL
      NIL
      NIL
    2. 叔黑
      1. 父、C同侧
        1. 同左:以祖右旋,祖涂红,父涂黑
          1. LAST
          GP
          P
          C
          B (NIL)
          U (NIL)
          NIL
          NIL
          1. NOW
          GP
          P
          C
          B (NIL)
          U (NIL)
          NIL
          NIL
        2. 同右:以祖左旋,祖涂红,父涂黑
          1. LAST
          GP
          U (NIL)
          P
          B (NIL)
          C
          NIL
          NIL
          1. NOW
          GP
          P
          C
          B (NIL)
          U (NIL)
          NIL
          NIL
      2. 父、C异侧
        1. 父左:以父左旋,转至同左侧
          1. LAST
          GP
          P
          B (NIL)
          C
          U (NIL)
          NIL
          NIL
          1. NOW
          GP
          P
          B (NIL)
          C
          U (NIL)
          NIL
          NIL
        2. 父右:以父右旋,转至同右侧
          1. LAST
          GP
          U (NIL)
          P
          C
          B (NIL)
          NIL
          NIL
          1. NOW
          GP
          U (NIL)
          NIL
          P
          C
          B (NIL)
          NIL
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:24:22  更:2021-09-12 13:26:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:47:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码