红黑树
二叉搜索树
- 二叉搜索树的搜索性能随着树结构发生改变
二叉平衡树
- 二叉平衡树的删除和增加操作会导致树结构发生频繁改变
红黑树
-
根节点是黑色
-
叶子结点NIL是黑色
-
红色节点的两个子节点是黑色
-
黑高(一节点任意路径上黑色结点相同)
红黑树插入
* 插入时节点为红色
* 如果树是空树
* 直接将插入节点设为根节点
* 如果插入的结点已经存在
* 无操作
* 如果插入节点的父节点是黑色
* 无操作
* 如果插入节点的父节点是红色
* 如果叔叔节点存在并为红色
* 叔叔和爸爸变成黑色,爷爷变成红色,修复爷爷节点
* 如果叔叔节点不存在或者为黑色:
* LL和RR双红的时候直接以爷爷节点进行右旋和左旋,爸爸变黑,爷爷变红
* RL和LR双红的时候以爸爸节点进行左旋和右旋,并修复爸爸节点
* 每次旋转之后都要重新找到根节点
红黑树删除
- 设置逻辑删除
本文详细探讨了红黑树这种自平衡二叉查找树的数据结构。红黑树确保了任何节点到其每个叶子节点的所有路径都包含相同数量的黑色节点,从而保持树的平衡。在插入和删除操作中,红黑树通过特定的调整策略,如颜色翻转和旋转,来维护其性质。插入时,新节点被标记为红色以避免破坏黑高平衡;删除时则采用逻辑删除并调整树结构。这些策略保证了红黑树在动态数据操作中保持高效的搜索性能。
1913

被折叠的 条评论
为什么被折叠?



