1. 思想:
- 采用递归的方式
- 这样就只用关心当前结点, 左右孩子交给递归实现
- 把一颗树只看作三个结点, 根结点和左右子树
- 采用先序遍历, 遍历一个, 就复制一个
- 首先遍历根结点, 就复制根结点
- 然后复制树的左右子树指针的地址作为参数, 传给下一层递归函数, 让程序自己执行
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));
}