c でビット文字列からバイナリ ツリーを作成しています。つまり、1100100 はツリーを作成します。
1
/ \
1 1
このツリーを構築するために再帰関数を使用することにしましたが、Debug assertion failed... というエラーが表示され続けます。 Expression : CrtIsValidHeapPointer(pUserData)
ここに私のコードの断片があります
typedef
struct Node {
char key;
struct Node *left;
struct Node *right;
} Node;
char string[1000];
int i = 0;
void insertRecursivePreorder(Node **node)
{
Node* parent = *node;
if(string[i] == '0')
{
parent = NULL;
i++;
}
else
{
Node *newn = (Node*)malloc(sizeof(Node));
newn->key = string[i];
parent = newn;
i++;
insertRecursivePreorder(&newn->left); //errors occur here
insertRecursivePreorder(&newn->right); //errors occur here
free(newn);
free(parent);
}
}
int main(void)
{
void printTree(Node* node);
Node* root = NULL;
scanf("%s", string);
insertRecursivePreorder(&root);
//... do other junk
}
このエラーが発生する理由と、それを修正するために何ができるのか疑問に思っていました。