数据结构 二叉树带双亲链表创建,C语言 问题:为什么一到右子树就没办法运行

2024-11-23 23:01:01
推荐回答(1个)
回答1:

在creat()函数中,在创建左右子节点时,如果子节点为空,也要记下,否则在遍历的时候出错。
重写creat()函数如下。
重写后程序能正常运行。另外,我在这里见过很多二叉树程序,几乎没人写删除二叉树的函数,大家都不在意内存泄漏吗?楼主自己补一个吧。
blink creat()
{
blink p,bt;
char ch;
ch=getchar();
if(ch!='#')
{
bt=(blink)malloc(sizeof(bnode));
bt->data=ch;
p=creat();
bt->lchild=p;
if(p)
p->parent=bt;
p=creat();
bt->rchild=p;
if(p)
p->parent=bt;
}
else bt=NULL;
return bt;
}