【C# 数据结构与算法】红黑树

 视频地址:2022考研计算机王道数据结构考点冲刺00 红黑树的定义和性质【新考点】 - YouTube

需要的知识储备

1、2-3-4树中翻转的概念

2、平衡二叉树中旋转的概念,请点击阅读平衡二叉树

3、二叉搜索树的概念,请点击阅读二叉搜索树

辅助理解的工具网站:Red/Black Tree

红黑树诞生背景

为什么要发明红黑树?

平衡二叉树AVL:插入/删除很容易破坏“平衡”特性,需要频繁调整树的形态。如:(插入操作导致不平衡,则需要先计算平衡因子,找到最小不平衡子树(时间开销大),再进行LL/RR/LR/RL调整

红黑树RBT:插入/删除很多时候不会破坏“红黑”特性,无需频繁调整树的形态。即便需要调整,一般都可以在常数级时间内完成,红黑树是二叉排序树,为了改进平衡二叉树的性能设计的。

平衡官叉树:适用于以查为主、很少插入/删除的场景红黑树:适用于频繁插入、删除的场景,实用性更强

 

定义

它在1972年由鲁道夫·贝尔发明,被称为"对称二叉B树",它现代的名字源于Leo J. Guibas和罗伯特·塞奇威克1978年写的一篇论文。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,并且在实践中高效:它可以在时间内完成查找、插入和删除,

红黑树是平衡二叉树,根据性质二,可以得出红黑树是平衡树。根据红黑树规则4可以得出用红色标注,是为了保存平衡,触发平衡机制。

 

红黑树的规则

 注意:nil是空节点,就是空指针。

 

①每个结点或是红色,或是黑色的

②根节点是黑色的
③叶结点(外部结点|NULL结点|失败结点)均是黑色的√
④不存在两个相邻的红结点(即红结点的父节点和孩子结点均是黑色)

⑤任意一个节点到其叶子节点的所有路劲都包含相同数目的黑色节点
最后的叶子节点是为空的节点(null视为黑)。

简记:左根右,根叶黑,不红红,黑路同

红黑树的性质

性质1:根据规则得出 从根节点到叶结点的最长路径不大于最短路径的2倍性质。因此红黑树也是平衡树

 

 

性质2:有n个内部节点的红黑树高度h ≤ 2logz(n+1)

结构定义

 

 红黑树结点插入操作

为什么插入非根节点的位置要染为红色,因为为了符合“黑路同"这特性。

红黑树的插入,只会违法“不红红”的特性,因为左右根,根叶同,黑路同是不变的。

染色是:黑变红,红变黑。父换爷染色指父和爷都染色。儿换爷染色指儿爷都染色。总结出辈分发生变化的节点都要染色(除了根节点)。

 

 

 知识点总结

 

 

posted @ 2022-06-03 19:32  小林野夫  阅读(343)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/