我正在从 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
}
我想知道为什么会出现这个错误以及我能做些什么来解决它。