我从c中的位串创建二叉树。即1100100创建树:创建二叉树的指针麻烦
1
/\
1 1
我决定使用递归函数来建立这棵树,但是我不断收到错误 调试断言失败... 表达: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
}
我想知道为什么会出现这个错误,我能做些什么来解决它。
您是否尝试过使用调试器? – huon 2012-04-28 02:17:41
yeap我有,我知道错误发生的地方,但老老实实地使用递归方法意味着它真的很难调试,因为有这么多的指针指针等指针 – 2012-04-28 02:22:27
实际上,我真的想知道为什么我不能插入&newn->右到我的insertRecursivePreorder函数 – 2012-04-28 02:23:45