From f4cf06ff53b83774703f6fe942bcb425a1222842 Mon Sep 17 00:00:00 2001 From: Thomas Rauh Desktop Date: Sun, 23 Nov 2025 00:35:38 +0100 Subject: [PATCH] nextTreeData + Test --- Start_Windows/bintree.c | 38 +++++++++++++++++++++++++++--- Start_Windows/bintree.o | Bin 1503 -> 2089 bytes Start_Windows/bintreeTests.c | 22 +++++++++++++++++ Start_Windows/runBintreeTests.exe | Bin 78827 -> 79440 bytes 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/Start_Windows/bintree.c b/Start_Windows/bintree.c index c2493c9..b2230e1 100644 --- a/Start_Windows/bintree.c +++ b/Start_Windows/bintree.c @@ -16,7 +16,7 @@ TreeNode *addToTree(TreeNode *root, const void *data, size_t dataSize, CompareFc return NULL; } - if (!root){ + if (!root){ //Neuen Node TreeNode *new = malloc(sizeof(TreeNode)); if (!new){ return NULL; @@ -27,7 +27,7 @@ TreeNode *addToTree(TreeNode *root, const void *data, size_t dataSize, CompareFc return NULL; } - memcpy(new->data, data, dataSize); + memcpy(new->data, data, dataSize); //data übertragen new->left = new->right = NULL; if (isDuplicate){ @@ -58,7 +58,39 @@ TreeNode *addToTree(TreeNode *root, const void *data, size_t dataSize, CompareFc // push the top node and push all its left nodes. void *nextTreeData(TreeNode *root) { - + static StackNode *stack = NULL; + static int initialized = 0; + + if (root != NULL) { // Initialisierung: Stack leeren und mit root + linke elemente befüllen + while (stack != NULL) { + stack = pop(stack); + } + while (root != NULL) { + stack = push(stack, root); + root = root->left; + } + initialized = 1; + } else if (!initialized) { // Noch nicht initialisiert und kein root übergeben + return NULL; + } + + if (stack == NULL) { //Ende + initialized = 0; + return NULL; + } + + TreeNode *topNode = (TreeNode *)top(stack); + stack = pop(stack); + + if (topNode->right != NULL) { + TreeNode *r = topNode->right; + while (r != NULL) { + stack = push(stack, r); + r = r->left; + } + } + + return topNode->data; } // Releases all memory resources (including data copies). diff --git a/Start_Windows/bintree.o b/Start_Windows/bintree.o index 4a63186e9037c24d082446a9b6eb7be933d7ef79..2b6e0156c8bf76705ec005fd0f1b5a464e367faf 100644 GIT binary patch delta 982 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