Ich habe versucht, die folgende Methode rekursiv zu schreiben, um einen Knoten in einen Binärbaum einzufügen. Die Strategie bestand darin, den Knoten im Grunde in jeden linken oder rechten NULL-Zeiger einzufügen.Element rekursiv in BinaryTree einfügen
typedef struct BinaryTreeNode {
int data;
BinaryTreeNode * left;
BinaryTreeNode * right;
} BinaryTreeNode;
void InsertElementInBinaryTree(BinaryTreeNode *root, BinaryTreeNode *element) {
if(root) {
if(root -> left == NULL) root -> left = element;
else if(root -> right == NULL) root -> right = element;
InsertElementInBinaryTree(root -> left, element);
InsertElementInBinaryTree(root -> right, element);
}
}
Die Methode aufgerufen wird, wie in der Hauptfunktion
InsertElementInBinaryTree(&root , new BinaryTreeNode{8, NULL,NULL});
Das Problem ist, dass dieser Aufruf immer einen Segmentation Fault Fehler zurückgibt, damit ich der Fehler in der Rekursion glauben?
Wenn Sie dynamische Strukturen wie Linked-Lists und Trees verwenden, müssen Sie ** malloc() ** verwenden, um Speicher auf dem Heap zu reservieren, bevor Sie Daten speichern können. Sie müssen auch ** frei() **, bevor die Anwendung beendet wird, sonst wiederholt die Verwendung Ihrer Anwendung alle Heapspeicher unbrauchbar machen. –