diff --git a/numbers.c b/numbers.c index 5c2f30a..1fdae3f 100644 --- a/numbers.c +++ b/numbers.c @@ -71,21 +71,24 @@ unsigned int *createNumbers(unsigned int len) { // on errors. unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) { if (!numbers || len < 2) - return NULL; // Fehlerhaftes Array + return 0; // Sicherheit: kein Array oder zu kurz - TreeNode *root = NULL; // neuer Baum + TreeNode *root = NULL; unsigned int duplicateValue = 0; for (unsigned int i = 0; i < len; i++) { int isDuplicate = 0; + + // Zahl in den Baum einfügen root = addToTree(root, &numbers[i], sizeof(unsigned int), compareUnsignedInt, &isDuplicate); - if (isDuplicate) { - duplicateValue = numbers[i]; - break; + + // Duplikat erkannt + if (isDuplicate && duplicateValue == 0) { + duplicateValue = numbers[i]; // das erste Duplikat merken } } - clearTree(root); - return duplicateValue; + clearTree(root); // Baum freigeben + return duplicateValue; // 0, falls kein Duplikat }