changed addToTreeRec so it now sets inDuplicate to 0 if needed
This commit is contained in:
parent
25da0d20df
commit
07796c1390
50
bintree.c
50
bintree.c
@ -48,7 +48,7 @@ TreeNode *addToTree(TreeNode *root, const void *data, size_t dataSize, CompareFc
|
|||||||
return addToTreeRec(root, newNode, compareFct, isDuplicate, 1);
|
return addToTreeRec(root, newNode, compareFct, isDuplicate, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
TreeNode *addToTreeRec(TreeNode *currentNode, TreeNode *newNode, CompareFctType compareFct, int *isDuplicate, const int root)
|
TreeNode *addToTreeRec(TreeNode *currentNode, TreeNode *newNode, CompareFctType compareFct, int *isDuplicate, const int root)
|
||||||
{
|
{
|
||||||
/*if ((currentNode == NULL))
|
/*if ((currentNode == NULL))
|
||||||
@ -62,7 +62,7 @@ TreeNode *addToTreeRec(TreeNode *currentNode, TreeNode *newNode, CompareFctType
|
|||||||
return currentNode;
|
return currentNode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// Mögliche Ergänzung --------------------------
|
// Mögliche Ergänzung --------------------------
|
||||||
@ -96,6 +96,52 @@ if (currentNode == NULL)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return currentNode;
|
||||||
|
} */
|
||||||
|
|
||||||
|
TreeNode *addToTreeRec(TreeNode *currentNode, TreeNode *newNode, CompareFctType compareFct, int *isDuplicate, const int root)
|
||||||
|
{
|
||||||
|
if ((currentNode == NULL))
|
||||||
|
{
|
||||||
|
if ((isDuplicate == NULL) || root)
|
||||||
|
{
|
||||||
|
if (isDuplicate != NULL)
|
||||||
|
{
|
||||||
|
*isDuplicate = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return newNode;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*isDuplicate = 0;
|
||||||
|
return currentNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((compareFct(currentNode->data, newNode->data) < 0))
|
||||||
|
{
|
||||||
|
currentNode->left = addToTreeRec(currentNode->left, newNode, compareFct, isDuplicate, 0);
|
||||||
|
}
|
||||||
|
else if ((compareFct(currentNode->data, newNode->data) > 0))
|
||||||
|
{
|
||||||
|
currentNode->right = addToTreeRec(currentNode->right, newNode, compareFct, isDuplicate, 0);
|
||||||
|
}
|
||||||
|
else if ((compareFct(currentNode->data, newNode->data) == 0))
|
||||||
|
{
|
||||||
|
if (isDuplicate == NULL)
|
||||||
|
{
|
||||||
|
currentNode->left = addToTreeRec(currentNode->left, newNode, compareFct, isDuplicate, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*isDuplicate = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDuplicate != NULL)
|
||||||
|
{
|
||||||
|
*isDuplicate = 0;
|
||||||
|
}
|
||||||
return currentNode;
|
return currentNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user