1.合法性检测,同时也是递归拷贝结束的条件
2.递归拷贝左子树,返回新的左子树的指针
3.递归拷贝右子树,返回新的右子树的指针
4.给新的根节点分配内存
5.将上述得到的新左右子树指针初始化新的根节点
6.将形参根节点的数据复制到新根节点的数据域;
BiTNode * CopyTree(BiTNode * T)
{
BiTNode * newRoot = NULL;
BiTNode * newLeft = NULL;
BiTNode * newRight = NULL;
if (T == NULL)
{
return NULL;
}
if (T->lchild)
{
newLeft = CopyTree(T->lchild);
}
else
{
newLeft = NULL;
}
if (T->rchild)
{
newRight = CopyTree(T->rchild);
}
else
{
newRight = NULL;
}
newRoot = (BiTNode*)malloc(sizeof(BiTNode));
if (newRoot == NULL)
return NULL;
newRoot->lchild = newLeft;
newRoot->rchild = newRight;
newRoot->data = T->data;
return newRoot;
}