getduplicate neu

This commit is contained in:
Kristin 2025-12-10 21:09:03 +01:00
parent 799667ed1c
commit 99a974cc9b

View File

@ -71,21 +71,24 @@ unsigned int *createNumbers(unsigned int len) {
// on errors. // on errors.
unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) { unsigned int getDuplicate(const unsigned int *numbers, unsigned int len) {
if (!numbers || len < 2) 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; unsigned int duplicateValue = 0;
for (unsigned int i = 0; i < len; i++) { for (unsigned int i = 0; i < len; i++) {
int isDuplicate = 0; int isDuplicate = 0;
// Zahl in den Baum einfügen
root = addToTree(root, &numbers[i], sizeof(unsigned int), root = addToTree(root, &numbers[i], sizeof(unsigned int),
compareUnsignedInt, &isDuplicate); compareUnsignedInt, &isDuplicate);
if (isDuplicate) {
duplicateValue = numbers[i]; // Duplikat erkannt
break; if (isDuplicate && duplicateValue == 0) {
duplicateValue = numbers[i]; // das erste Duplikat merken
} }
} }
clearTree(root); clearTree(root); // Baum freigeben
return duplicateValue; return duplicateValue; // 0, falls kein Duplikat
} }