tree: rename 'FIXUP' macros to 'REBALANCE'
This commit is contained in:
parent
3ad20d71ff
commit
efa35adbc5
44
src/tree.c
44
src/tree.c
@ -51,23 +51,23 @@ static inline void tree__rotate_right(tree_t* tree, tree_node_t* node) {
|
||||
break; \
|
||||
}
|
||||
|
||||
#define TREE__FIXUP_AFTER_INSERT(cis, trans) \
|
||||
tree_node_t* grandparent = parent->parent; \
|
||||
tree_node_t* uncle = grandparent->trans; \
|
||||
\
|
||||
if (uncle && uncle->red) { \
|
||||
parent->red = uncle->red = false; \
|
||||
grandparent->red = true; \
|
||||
node = grandparent; \
|
||||
} else { \
|
||||
if (node == parent->trans) { \
|
||||
tree__rotate_##cis(tree, parent); \
|
||||
node = parent; \
|
||||
parent = node->parent; \
|
||||
} \
|
||||
parent->red = false; \
|
||||
grandparent->red = true; \
|
||||
tree__rotate_##trans(tree, grandparent); \
|
||||
#define TREE__REBALANCE_AFTER_INSERT(cis, trans) \
|
||||
tree_node_t* grandparent = parent->parent; \
|
||||
tree_node_t* uncle = grandparent->trans; \
|
||||
\
|
||||
if (uncle && uncle->red) { \
|
||||
parent->red = uncle->red = false; \
|
||||
grandparent->red = true; \
|
||||
node = grandparent; \
|
||||
} else { \
|
||||
if (node == parent->trans) { \
|
||||
tree__rotate_##cis(tree, parent); \
|
||||
node = parent; \
|
||||
parent = node->parent; \
|
||||
} \
|
||||
parent->red = false; \
|
||||
grandparent->red = true; \
|
||||
tree__rotate_##trans(tree, grandparent); \
|
||||
}
|
||||
|
||||
int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
|
||||
@ -95,9 +95,9 @@ int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
|
||||
|
||||
for (; parent && parent->red; parent = node->parent) {
|
||||
if (parent == parent->parent->left) {
|
||||
TREE__FIXUP_AFTER_INSERT(left, right)
|
||||
TREE__REBALANCE_AFTER_INSERT(left, right)
|
||||
} else {
|
||||
TREE__FIXUP_AFTER_INSERT(right, left)
|
||||
TREE__REBALANCE_AFTER_INSERT(right, left)
|
||||
}
|
||||
}
|
||||
tree->root->red = false;
|
||||
@ -105,7 +105,7 @@ int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define TREE__FIXUP_AFTER_REMOVE(cis, trans) \
|
||||
#define TREE__REBALANCE_AFTER_REMOVE(cis, trans) \
|
||||
tree_node_t* sibling = parent->trans; \
|
||||
\
|
||||
if (sibling->red) { \
|
||||
@ -191,9 +191,9 @@ void tree_del(tree_t* tree, tree_node_t* node) {
|
||||
if (node == tree->root)
|
||||
break;
|
||||
if (node == parent->left) {
|
||||
TREE__FIXUP_AFTER_REMOVE(left, right)
|
||||
TREE__REBALANCE_AFTER_REMOVE(left, right)
|
||||
} else {
|
||||
TREE__FIXUP_AFTER_REMOVE(right, left)
|
||||
TREE__REBALANCE_AFTER_REMOVE(right, left)
|
||||
}
|
||||
node = parent;
|
||||
parent = parent->parent;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user