From 804294b96ef7c3ef7a5b76e149a9a82dee1a4a17 Mon Sep 17 00:00:00 2001 From: Simon May Date: Tue, 2 Dec 2025 14:44:04 +0100 Subject: [PATCH] =?UTF-8?q?aufr=C3=A4umen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bintree.c | 36 +++++++++++++++++++++++++++++++----- numbers.c | 5 +++++ runNumbersTest.exe | Bin 184107 -> 184107 bytes 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/bintree.c b/bintree.c index 5cf82a9..552c170 100644 --- a/bintree.c +++ b/bintree.c @@ -2,16 +2,17 @@ #include "stack.h" #include "bintree.h" -//TODO: binären Suchbaum implementieren +// TODO: binären Suchbaum implementieren /* * `addToTree`: fügt ein neues Element in den Baum ein (rekursiv), - * `clearTree`: gibt den gesamten Baum frei (rekursiv), - * `treeSize`: zählt die Knoten im Baum (rekursiv), - * `nextTreeData`: Traversierung mit Hilfe des zuvor implementierten Stacks. */ + * `clearTree`: gibt den gesamten Baum frei (rekursiv), + * `treeSize`: zählt die Knoten im Baum (rekursiv), + * `nextTreeData`: Traversierung mit Hilfe des zuvor implementierten Stacks. */ // Adds a copy of data's pointer destination to the tree using compareFct for ordering. Accepts duplicates // if isDuplicate is NULL, otherwise ignores duplicates and sets isDuplicate to 1 (or to 0 if a new entry is added). TreeNode *addToTree(TreeNode *root, const void *data, size_t dataSize, CompareFctType compareFct, int *isDuplicate) { + } @@ -26,11 +27,36 @@ void *nextTreeData(TreeNode *root) // Releases all memory resources (including data copies). void clearTree(TreeNode *root) { - + if (root == NULL) + { + return; + } + + if (root->left != NULL) + { + clearTree(root->left); + free(root->left); + } + else if (root->right != NULL) + { + clearTree(root->right); + free(root->right); + } + root->data = NULL; } // Returns the number of entries in the tree given by root. unsigned int treeSize(const TreeNode *root) { + int counterL, counterR = 0; + if (root->left != NULL) + { + counterL = treeSize(root->left) + 1; + } + else if (root->right != NULL) + { + counterR = treeSize(root->right) + 1; + } + return counterL + counterR; } \ No newline at end of file diff --git a/numbers.c b/numbers.c index cd016a4..41d0980 100644 --- a/numbers.c +++ b/numbers.c @@ -136,6 +136,11 @@ unsigned int getDuplicate(const unsigned int numbers[], unsigned int len) unsigned int temp[len]; unsigned int duplicate = 0; + /*if(numbers == NULL || (sizeof(numbers) / sizeof(typeof(numbers)) != len)) + { + return 0;S + }*/ + for (int i = 0; i < len; i++) { temp[i] = numbers[i]; diff --git a/runNumbersTest.exe b/runNumbersTest.exe index 7536779767c198f296903ba63dc27d07c9bed198..8b78d8fe89c9af925e8cc924abaca7cf1d3e79e8 100644 GIT binary patch delta 27 jcmZ2Ik9+kz?g<@C6>lbX`7sG*Hr{Hz#klnrQ{XuOt1}FD delta 27 jcmZ2Ik9+kz?g<@CJ(nhS`7x>bH{NQ!#klnrQ{XuOs