[问题] 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