|
|
|
@ -123,11 +123,15 @@ TR_treeDelete(TR_Tree * this, const void * search, TR_TreeComp comp) |
|
|
|
} else { |
|
|
|
TR_TREE_ROTATE(right, this, node->parent); |
|
|
|
} |
|
|
|
} else { |
|
|
|
// case 3/4 |
|
|
|
if (NULL != sibling |
|
|
|
sibling = TR_TREE_SIBLING(node); |
|
|
|
} |
|
|
|
|
|
|
|
if (NULL == sibling |
|
|
|
|| (rbBlack == sibling->color |
|
|
|
&& TR_TREE_NODE_BLACK(sibling->left) |
|
|
|
&& TR_TREE_NODE_BLACK(sibling->right)) { |
|
|
|
&& TR_TREE_NODE_BLACK(sibling->right))) { |
|
|
|
// case 3/4 |
|
|
|
if (NULL != sibling) { |
|
|
|
sibling->color = rbRed; |
|
|
|
} |
|
|
|
|
|
|
|
@ -163,6 +167,7 @@ TR_treeDelete(TR_Tree * this, const void * search, TR_TreeComp comp) |
|
|
|
|
|
|
|
TR_TREE_ROTATE(left, this, sibling); |
|
|
|
} |
|
|
|
sibling = TR_TREE_SIBLING(node); |
|
|
|
} |
|
|
|
|
|
|
|
// case 6 |
|
|
|
|