perf(search tree): improved remove performance by removing usseless if statements
This commit is contained in:
parent
d6e1a5309d
commit
8c911e8a4c
2 changed files with 6 additions and 9 deletions
|
|
@ -185,11 +185,13 @@ FledastyError fledasty_binary_search_tree_##name##_remove(FledastyBinarySearchTr
|
|||
replacement_node = replacement_node->right; \
|
||||
} \
|
||||
\
|
||||
replacement_node->left = current_node->left; \
|
||||
if (current_node->left != NULL) { \
|
||||
current_node->left->parent = replacement_node; \
|
||||
if (replacement_node->parent->right == replacement_node) { \
|
||||
replacement_node->parent->right = replacement_node->left; \
|
||||
} \
|
||||
\
|
||||
replacement_node->left = current_node->left; \
|
||||
current_node->left->parent = replacement_node; \
|
||||
\
|
||||
replacement_node->right = current_node->right; \
|
||||
if (current_node->right != NULL) { \
|
||||
current_node->right->parent = replacement_node; \
|
||||
|
|
@ -197,11 +199,6 @@ FledastyError fledasty_binary_search_tree_##name##_remove(FledastyBinarySearchTr
|
|||
} \
|
||||
\
|
||||
if (replacement_node != NULL) { \
|
||||
if (replacement_node->parent->right == replacement_node) { \
|
||||
replacement_node->parent->right = NULL; \
|
||||
} else { \
|
||||
replacement_node->parent->left = NULL; \
|
||||
} \
|
||||
replacement_node->parent = current_node->parent; \
|
||||
} \
|
||||
\
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ int main() {
|
|||
|
||||
hallocy_free(in_order_result);
|
||||
|
||||
fledasty_binary_search_tree_int_int_remove(&test_search_tree, 3);
|
||||
fledasty_binary_search_tree_int_int_remove(&test_search_tree, 5);
|
||||
fledasty_binary_search_tree_int_int_in_order_traversal(&test_search_tree, &in_order_result);
|
||||
for (int i = 0; i < test_search_tree.size; i += 1) {
|
||||
printf("In order (After Remove): %d\n", in_order_result[i]->key);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue