我從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