addToTree implemented

This commit is contained in:
reeceal105988 committed 2026-11-12 15:38:28 +01:00
1 parent b2b6f6a896
commit fab92499fa
1 file changed
+13 -1
+13 -1
View File
@@ -7,11 +7,23 @@
* `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)
{
// create new node
TreeNode* newNode = (TreeNode *)calloc(1, sizeof(TreeNode));
newNode->data = calloc(1, dataSize);
memcpy(newNode->data, data, dataSize);
if (root == NULL) return newNode;
if (compareFct(data, root->data)) {
root->left = addToTree(root->left, data, dataSize, compareFct, isDuplicate);
} else if (compareFct(root->data, data)) {
root->right = addToTree(root->right, data, dataSize, compareFct, isDuplicate);
}
return root;
}