perf(search tree): improved remove performance by removing usseless if statements

This commit is contained in:
Mineplay 2025-09-01 04:41:06 -05:00
parent d6e1a5309d
commit 8c911e8a4c
2 changed files with 6 additions and 9 deletions

View file

@ -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; \
} \
\

View file

@ -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);