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 = replacement_node->right; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
replacement_node->left = current_node->left; \
|
if (replacement_node->parent->right == replacement_node) { \
|
||||||
if (current_node->left != NULL) { \
|
replacement_node->parent->right = replacement_node->left; \
|
||||||
current_node->left->parent = replacement_node; \
|
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
|
replacement_node->left = current_node->left; \
|
||||||
|
current_node->left->parent = replacement_node; \
|
||||||
|
\
|
||||||
replacement_node->right = current_node->right; \
|
replacement_node->right = current_node->right; \
|
||||||
if (current_node->right != NULL) { \
|
if (current_node->right != NULL) { \
|
||||||
current_node->right->parent = replacement_node; \
|
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 != 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; \
|
replacement_node->parent = current_node->parent; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
|
|
|
||||||
|
|
@ -340,7 +340,7 @@ int main() {
|
||||||
|
|
||||||
hallocy_free(in_order_result);
|
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);
|
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) {
|
for (int i = 0; i < test_search_tree.size; i += 1) {
|
||||||
printf("In order (After Remove): %d\n", in_order_result[i]->key);
|
printf("In order (After Remove): %d\n", in_order_result[i]->key);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue