if(!T1)
return;
if(T){
T1->data=T->data;
if(T->left)
{
T1->left=new(node);
CopyBT(T->left,T1->left);
}
else
T1->left=NULL;
if(T->right)
{
                  T1->right=new(node);
CopyBT(T->right,T1->right);
}
else
T1->right = NULL;
}
else 
{
             T1->data=0;
T1->left = T1->right = NULL;
}

解决方案 »

  1.   

    new(node);这样使用new正确吗?
    不论这个!
    if(T)
    {
    .......
    }
    else 
      T->data=0;
    这里有一个很大的错误,但是不知道是不是影响你的程序的原因。
    很明显的,
    如果T==NULL,那么T->data=0也肯定错误的!
      

  2.   

    void CopyBT(node *T,node *T1)
    {
         if(T==NULL||T1==NULL)return;
    //
         T1->data=T->data;
         T1->left=new(node);
         CopyBT(T->left,T1->left);
         T1->right=new(node);
         CopyBT(T->right,T1->right);
    //
    }
      

  3.   

    函数的递归调用有问题:
    先写一函数:
    void CopyBT(node *T,node *T1)
    {
    if(T)
                {
    T1->data=T->data;
    T->left=T1->left;
    T->right=T1->right;
       }
    else 
                      T->data=0;
    }CopyBT(T->left,T1->left);
    CopyBT(T->right,T1->right);
      

  4.   

    还是有问题
    T1->data=T->data;出现错误为:
    Unhandled exception in tree.exe:0xC00000005:Access Violation