树的拷贝

来源:互联网 发布:java gbk转utf8 编辑:程序博客网 时间:2024/05/22 03:42

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;}