f10-binary-tree #27

Merged
Mineplay merged 16 commits from f10-binary-tree into main 2025-09-03 13:20:51 -05:00
2 changed files with 6 additions and 9 deletions
Showing only changes of commit 8c911e8a4c - Show all commits

View file

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

View file

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