欢迎加qq群:453398542 学习讨论,会定期分享资料课程,解答问题。
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
char data; //数据域
struct BiTNode *lchild, *rchild; //左、右孩子指针
}BiTNode, *BiTree;
void CreatBiTree(BiTree &bt){
//构造二叉树
char ch;
ch=getchar();
if(ch=='#')
bt=NULL;
else{
bt=(BiTree)malloc(sizeof(BiTNode));
bt->data=ch;
CreatBiTree(bt->lchild);
CreatBiTree(bt->rchild);
}
}
BiTree Copy(BiTree bt){
//复制二叉树
if (bt){
BiTree bt2=(BiTree)malloc(sizeof(BiTNode));
bt2->data=bt->data;
bt2->lchild=Copy(bt->lchild);
bt2->rchild=Copy(bt->rchild);
return bt2;
}
else
return NULL;
}
void visit(char data){
printf("%3c",data);
}
void PreOrderTraverse(BiTree bt){
//先序遍历
if(bt){
visit(bt->data);
PreOrderTraverse(bt->lchild);
PreOrderTraverse(bt->rchild);
}
}
int main(){
BiTree bt,bt2;
printf("请输入数据构造一棵二叉树:\n");
CreatBiTree(bt);
PreOrderTraverse(bt);
printf("\n复制一棵二叉树:\n");
bt2=Copy(bt);
PreOrderTraverse(bt2);
return 0;
}