扩展先序法建立二叉树不用二重指针为什么不行?
struct bitree
{
char data;
bitree *lchild;
bitree *rchild;
};
void creat(bitree **bt)
{
char ch;
ch=getchar();
if(ch=='.')
*bt=NULL;
else
{
(*bt)=new bitree;
(*bt)->data=ch;
creat(&((*bt)->lchild));
creat(&((*bt)->rchild));
}
}
如果形参不用二重指针这个二叉树好像就不能返回到主函数中。。。求高手指点。。。
[解决办法]
这个是你的基础的问题了,哥哥。在c中不存在引用,那么所有的参数传参的时候,都会发生拷贝,那么你分配内存的时候,把分配得到的那个地址放到了一个局部指针中了,那么返回后,由于你没有得到那个局部指针保存的值,那么虽然堆上的内存还未被销毁,但是你找不到了。