[問題] binary_tree裡free的問題

作者: kdok123 (小天)   2014-09-04 17:04:25
static struct node{
char data;
node *lchind, *rchild;
};
static node *createatree(node *tree)
{
char item;
tree = (node*)malloc(sizeof(node*));
cout<< "請輸入字元" <<endl;
cin >> item;
if(item =='t')
tree = NULL;
else
{
tree->data = item;
tree->lchind = createatree(tree->lchind);
tree->rchild = createatree(tree->rchild);
}
return tree;
}
static void destroy(node *tree)
{
if(tree)
{
destroy(tree->lchind);
destroy(tree->rchild);
free(tree);
}
}
int main()
{
struct node *tree = NULL;
tree = createatree(tree);
destroy(tree);
return 0;
}
////////////程式分隔線//////////////////
我寫了一個可以讓使用者輸入的tree,輸入t時為null,並用前序排列
但是在free的函數上出了問題(爆掉跳出來了)
我逐行的跑進去,確定它是指到葉子的時候才free的(tree左右都是null)
想請問code的問題在哪裡??
謝謝~
作者: ppc ( )   2014-09-04 17:24:00
free(tree); 下一行多個tree=NULL; 看看
作者: kerwinhui (kezza)   2014-09-04 17:28:00
一開始的header...加了後g++ 會叫但改成struct node{char data,...};跑起來沒問題啊
作者: soheadsome (師大狗鼻哥)   2014-09-04 17:40:00
sizeof(node*) ?
作者: kdok123 (小天)   2014-09-04 17:53:00
sizeof確實宣告錯了,改成sizeof(node)就可以了,感謝!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com