From 99a974cc9b200b367c5485fe3b1f0a4bf37d1849 Mon Sep 17 00:00:00 2001 From: Kristin Date: Wed, 10 Dec 2025 21:09:03 +0100 Subject: [PATCH] getduplicate neu --- numbers.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) 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 }