From 1c76a9818624cae853e044ac2eddf20e41087765 Mon Sep 17 00:00:00 2001 From: paulusja Date: Thu, 11 Dec 2025 12:28:24 +0100 Subject: [PATCH] Add solution for clear archive (bst). --- 09_bst/main.c | 4 ++-- 09_bst/namesarchive.c | 28 +++++++++++++++------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/09_bst/main.c b/09_bst/main.c index 0c9c75b..0fdac6f 100644 --- a/09_bst/main.c +++ b/09_bst/main.c @@ -28,13 +28,13 @@ int main() printf("\nNames in archive:\n"); printNames(); printf("\n"); - +*/ printf("Clearing archive ...\n"); clearArchive(); printf("\nNames in archive:\n"); printNames(); - printf("\n");*/ + printf("\n"); return EXIT_SUCCESS; } \ No newline at end of file diff --git a/09_bst/namesarchive.c b/09_bst/namesarchive.c index b9fb3f3..227ac8c 100644 --- a/09_bst/namesarchive.c +++ b/09_bst/namesarchive.c @@ -69,12 +69,6 @@ void printNames() printNamesRec(root); } /* -static void disposeElem(QueueElem *elem) -{ - if(elem != NULL) - free(elem->name); - free(elem); -} static QueueElem *removeElemRek(QueueElem *elem, const char *name) { @@ -96,19 +90,27 @@ void removeName(const char *name) { head = removeElemRek(head, name); } +*/ -static void clearElemRek(QueueElem *elem) +static void disposeNode(Node *node) { - if(elem != NULL) + if(node != NULL) + free(node->name); + free(node); +} + +static void clearNodeRec(Node *node) +{ + if(node != NULL) { - clearElemRek(elem->next); - disposeElem(elem); + clearNodeRec(node->left); + clearNodeRec(node->right); + disposeNode(node); } } void clearArchive() { - clearElemRek(head); - head = NULL; + clearNodeRec(root); + root = NULL; } -*/ \ No newline at end of file