Hi
ich hoffe einer von euch kann mir helfen
ich habe mal als übung nen Binärbaum programmiert in C.
Erstellen, Werte einfügen, löschen funktioniert
Tiefensuche nun auch.
Ich möchte nun eine Funktion schreiben die den Baum in Pre,post und inorder durchläuft (an sich kein Problem die Tiefensuche läuft ja) aber dazu möchte ich noch ein Array füllen in das der jeweilige Wert des besuchten Knotens eingefügt wird.
hier mal die preorder tiefensuche
ich möchte also das ein array bei jedem rekursiven durchlauf mit dem jeweiligen wert des besuchten Knotens gefüllt wird, so lange bis der durchlauf beendet wird.
Ich hoffe jemand kann mir helfen
Signatur der zu implementierenden Funktion sieht wie folgt aus
EDIT:
mein Bisheriger Ansatz
die letzten beiden zeilen sind bewusst auskommentiert, da diese das programm killen, diese sollten eigentlich die rekursion in preorder durchführen, selbst auskommentiert wird das Array lediglich mit 0en befüllt, der erste Wert ist jedoch eine 10
inputArrayLenght_helper ist 17 ints groß, so groß wie das inputArray im Testprogramm, das alle implementierten Funktionen testet
ich hoffe einer von euch kann mir helfen
ich habe mal als übung nen Binärbaum programmiert in C.
Erstellen, Werte einfügen, löschen funktioniert
Tiefensuche nun auch.
Ich möchte nun eine Funktion schreiben die den Baum in Pre,post und inorder durchläuft (an sich kein Problem die Tiefensuche läuft ja) aber dazu möchte ich noch ein Array füllen in das der jeweilige Wert des besuchten Knotens eingefügt wird.
hier mal die preorder tiefensuche
Code:
bool bintree_dsearch(bintree *tree, int value)
{
if (value == tree->value)
{return true;}
if (tree->left != NULL)
{return bintree_dsearch(tree->left, value);}
if (tree->right != NULL)
{return bintree_dsearch(tree->right, value);}
}
ich möchte also das ein array bei jedem rekursiven durchlauf mit dem jeweiligen wert des besuchten Knotens gefüllt wird, so lange bis der durchlauf beendet wird.
Ich hoffe jemand kann mir helfen
Signatur der zu implementierenden Funktion sieht wie folgt aus
Code:
int *bintree_prefix(bintree *tree);
EDIT:
mein Bisheriger Ansatz
Code:
int i = 0;
int *bintree_prefix(bintree *tree)
{
uint64_t *prefixArray = malloc(inputArrayLength_helper*sizeof(uint64_t));
// while (i < inputArrayLength_helper)
prefixArray[i]=tree->value;
i++;
// return (bintree_prefix(tree->left));
// return (bintree_prefix(tree->right));
}
die letzten beiden zeilen sind bewusst auskommentiert, da diese das programm killen, diese sollten eigentlich die rekursion in preorder durchführen, selbst auskommentiert wird das Array lediglich mit 0en befüllt, der erste Wert ist jedoch eine 10
inputArrayLenght_helper ist 17 ints groß, so groß wie das inputArray im Testprogramm, das alle implementierten Funktionen testet
Zuletzt bearbeitet: