请完成一个函数,输入一个二叉树,该函数输出它的镜像。
1 #include2 using namespace std; 3 4 typedef struct node 5 { 6 char data;//结点数据 7 struct node *lchild,*rchild;//二叉树结点类型 8 }BSTree;//二叉树结点类型 9 10 11 void Createb(BSTree **p)//建立二叉树12 {13 char ch;14 cin>>ch;15 if(ch!='.')16 {17 *p=(BSTree*)malloc(sizeof(BSTree));//申请空间18 (*p)->data=ch;//空间赋值19 Createb(&(*p)->lchild);//生成左子树20 Createb(&(*p)->rchild);//生成右子树21 }22 else *p=NULL;//空结点23 }24 25 void Preorder(BSTree *p)//先序遍历二叉树26 {27 if(p!=NULL)28 {29 printf("%3c",p->data);30 Preorder(p->lchild);31 Preorder(p->rchild);32 }33 }34 35 void Mirror(BSTree *root)36 {37 if(root==NULL)38 return;39 if(root->rchild==NULL&&root->lchild==NULL)40 return;41 BSTree *temp=root->lchild;42 root->lchild=root->rchild;43 root->rchild=temp;44 if(root->lchild)45 Mirror(root->lchild);46 if(root->rchild)47 Mirror(root->rchild);48 }49 50 51 52 void main()53 {54 BSTree *root;55 printf("create BSTree root:\n");56 Createb(&root);//生成二叉树57 Preorder(root);//先序遍历二叉树58 Mirror(root);59 Preorder(root);//先序遍历二叉树60 }