1. 思想:

  1. 采用递归的方式
    1. 这样就只用关心当前结点, 左右孩子交给递归实现
  2. 把一颗树只看作三个结点, 根结点和左右子树
  3. 采用先序遍历, 遍历一个, 就复制一个
  4. 首先遍历根结点, 就复制根结点
  5. 然后复制树的左右子树指针的地址作为参数, 传给下一层递归函数, 让程序自己执行

2. 在c语言中的实现

代码:

void CopyTree(BiTree T, BiTree *CopyT)
{   // 获得二叉树T的拷贝CopyT 
    if (T==NULL){
        *CopyT=NULL;
        return;
    }
    *CopyT=(BiTree)calloc(1,sizeof(BiTNode));
    (*CopyT)->data=T->data;
    CopyTree(T->LChild, &((*CopyT)->LChild));
    CopyTree(T->RChild, &((*CopyT)->RChild));
}