次のメソッドを再帰的に書き込んで、ノードをバイナリツリーに挿入しようとしました。戦略は、基本的にNULLの左または右ポインタにノードを挿入することでした。主な機能要素をBinaryTreeに再帰的に挿入する
InsertElementInBinaryTree(&root , new BinaryTreeNode{8, NULL,NULL});
問題は、私はエラーが再帰であると考えているように、この呼び出しは常に、セグメンテーションフォールトエラーを返すことで、以下のように
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);
}
}
メソッドが呼ばれているのですか?
リンクリストやツリーなどの動的構造を使用する場合は、データを保存する前に** malloc()**を使用してヒープ上のストレージを予約する必要があります。アプリケーションを終了する前に** free()**する必要があります。そうしないと、アプリケーションを繰り返し使用するとすべてのヒープメモリが使用できなくなります。 –