mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-18 03:51:35 +08:00
添加备注
This commit is contained in:
parent
bd3258010a
commit
5f6790687f
11
src/tree.c
11
src/tree.c
@ -1089,13 +1089,18 @@ static bool tree_rb_rebalance(struct _tree* self, struct _tree_node* node)
|
|||||||
struct _tree_node* uncle = NULL;
|
struct _tree_node* uncle = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 考虑三种情况,其余三种对称即可
|
* @brief 新插入节点为红色,且父节点为红色的情况下,需要调整。
|
||||||
*
|
*
|
||||||
* 新插入节点为红色,若父节点为黑色,则不用处理
|
* 主要考虑前三种情况[1-3],其余三种[4-6]对称操作即可
|
||||||
|
*
|
||||||
|
* 原则只有一个,那就是想办法维持红黑树性质不变
|
||||||
*
|
*
|
||||||
* | 情况 | 说明 | 调整方式 |
|
* | 情况 | 说明 | 调整方式 |
|
||||||
* | ---- | --- | -------- |
|
* | ---- | --- | -------- |
|
||||||
* | 1 |
|
* | 0 | 父节点为黑色 | 不用处理
|
||||||
|
* | 1 | 父红,爷黑,叔红 | 仅变色即可:父黑,爷红,叔黑
|
||||||
|
* | 2 | 父红,爷黑,叔黑 | (若爷孙在同一边)父黑,爷红,爷左/右旋
|
||||||
|
* | 3 | 父红,爷黑,叔黑 | (若爷孙在不同边)先父左右旋,将新父变黑,随后爷红,爷左/右旋
|
||||||
*/
|
*/
|
||||||
while(node->parent != NULL && node->parent->color == RBT_RED)
|
while(node->parent != NULL && node->parent->color == RBT_RED)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user