红黑树

原文链接:https://blog.csdn.net/qq_32727095/article/details/112667573

  • 红黑树是一棵自平衡二叉树,
  • 以前也叫平衡二叉B树

平衡二叉树又叫AVL树,具有以下性质:

  • 它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

平衡二叉树好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。

红黑树的性质
image.png
  1. 节点是RED或者BLACK
  2. 根节点是Black
  3. 叶子节点(外部节点、空节点)都是black
  4. red节点的parent都是black,red节点的子节点都是black;从根节点到叶子节点的所有路径上不能有2个连续的red节点
  5. 从任一节点到叶子节点的所有路径都包含相同数目的black节点

红黑树 与 4阶B树

image.png

下面是一个与上面的红黑树等价的 4阶B树;


image.png

红黑树基础代码

image.png

添加节点12种情况()(默认为red)

  1. 当 parent 是黑色,不做任何处理,添加完成后任是一棵红黑树。有 4 种情况满足红黑树的性质 4 :parent 为 BLACK
  2. 当前parent为红色,有 8 种情况不满足红黑树的性质 4 :parent 为 RED( Double Red )
    (1)4种为上溢的情况:【判定条件:uncle 节点是红色】上溢(LL,RR,LR,RL),将parent,unicode染成黑色,grand向上合并。并且将grand染成红色当作新节点处理【递归】;grand向上合并时,可能会继续发生上溢,若上溢到根节点,只需将根节点染成black
    (2)4种为旋转的情况:【判定条件:uncle 节点不是红色(包括null)】
     ①:旋转【LL】【RR】:将parent染成黑色,grand染成红色,然后对grand进行旋转,若grand是LL的情况:右旋转,若grand是RR的情况,左旋转

②:旋转【LR】【RL】:将自己染成黑色,grand染成红色,然后对grand进行旋转,若grand是LR的情况:parent左旋转,grand右旋转,若grand是RL的情况:parent右旋转,grand左旋转

image.png
image.png
image.png
image.png
image.png
image.png

红黑树的平衡

  • 相比AVL树,红黑树的平衡标准比较宽松:没有一条路径会大于其他路径的2被
  • 是一种弱平衡、黑高度平衡
  • 红黑树的最大高度是2*log2(n+1),依然O(logn)级别

平均复杂的

  • 搜索: O(logn)
  • 添加:O(logn),O(1)此的旋转操作

AVL树VS红黑树

AVL树

  • 平衡标准比较严格:每个左右子树的高度差不超过 1
  • 最大高度是 1.44 ∗ l o g 2 n + 2 − 1.328 (100W 个节点,AVL树最大树 高28)
  • 搜索、添加、删除都是 O ( l o g n ) 复杂度,其中添加仅需 O ( 1 ) 次旋转调整、删除最多需要 O ( l o g n ) 次旋转调整

红黑树

  • 平衡标准比较宽松:没有一条路径会大于其他路径的 2倍
  • 最大高度是 2 ∗ l o g 2 ( n + 1 ) ( 100W 个节点,红黑树最大树 高40)
  • 搜索、添加、删除都是 O ( l o g n )复杂度,其中添加、删除都仅需 O(1) 次旋转调整
  • 搜索的次数远远大于插入和删除,选择AVL树;
     搜索、插入、删除次数几乎差不多,选择红黑树
  • 相对于AVL树来说,红黑树牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树
  • 红黑树的平均统计性能优于AVL树,实际应用中更多选择使用红黑树
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 红黑树 红黑树也是一种自平衡的二叉搜索树以前也叫做平衡二叉B树(Symmetric Binary B-tree) ...
    ducktobey阅读 747评论 0 1
  • 接上章: B树(多路查找树) 本章主要介绍【红黑树】的性质以及【红黑树】节点的增加和删除操作。是类比B树节点的增加...
    翀鹰精灵阅读 448评论 0 2
  • 1、概述 红黑树也是一种自平衡的二叉搜索树。 红黑树的5条性质 1、节点只能是RED或BLACK。 2、根节点只能...
    code希必地阅读 892评论 0 0
  • 目录 序言 红黑树必须满足以下5条性质 添加 删除 一 序言 红黑树也是一种自平衡的二叉搜索树,以前也叫做平衡二叉...
    路飞_Luck阅读 3,787评论 9 64
  • 红黑树(Red Black Tree) 红黑树也是一种自平衡的二叉搜索树,红黑树必须满足一下5条性质: 1.节点是...
    coder_feng阅读 284评论 0 0