先序序列遍历建立二叉树
void CreateBiTree(BiTree *T) //指针的指针
{
//按照先序遍历的节点序列构造二叉树,用空格表示空节点
elemtype ch;
scanf("%c", &ch);
if (ch == '#')
{
*T = NULL;
}
else
{
*T = (BiTree)malloc(sizeof(BiTNode));
(*T)->data = ch;
CreateBiTree(&(*T)->lchild); //递归创建左分支
CreateBiTree(&(*T)->rchild); //递归创建右分支
}
}
复制二叉树
int Copy(BiTree T,BiTree* NewT) //新二叉树头结点
{
if(T==NULL) //如果原二叉树为空,新二叉树也为空
{
NewT=NULL;
return 0;
}
else
{
NewT=(BiTree)malloc(sizeof(BiTNode)); //为新二叉树结点申请空间
NewT->data=T->data; //将原二叉树的数据域给新二叉树结点
copy(T->lChild,NewT->lchild); //进入递归,赋值本根节点的左孩子
copy(T->rChild,NewT->rchild); //进入递归,赋值本根节点的右孩子
}
}
<