#include<stdio.h>
#include<iostream>
#include<malloc.h>
#include<stack>
using namespace std;
typedef struct BTNode
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode,*BTree;
void CreateBTree(BTree &T)
{
char ch;
ch=getchar();
if(ch=='#')
{
T=NULL;
return;
}
else
{
T=(BTNode*)malloc(sizeof(BTNode));
T->data=ch;
CreateBTree(T->lchild);
CreateBTree(T->rchild);
}
}
void PreOrder(BTree T) // 先序遍历--递归
{
if(T==NULL)
return;
cout<<T->data;
PreOrder(T->lchild );
PreOrder(T->rchild );
}
void Mirror(BTree &T)
{
if(T==NULL)
return;
if(T->lchild ==NULL&&T->rchild ==NULL)
return;
BTNode *temp=T->lchild ;
T->lchild =T->rchild ;
T->rchild =temp;
if(T->lchild )
Mirror(T->lchild );
if(T->rchild )
Mirror(T->rchild );
}
void main()
{
BTree T;
printf("递归先序建立二叉树(空节点用#代替):\n");
CreateBTree(T);
printf("原树先序遍历:");
PreOrder(T);
printf("\n");
Mirror(T);
printf("镜像先序遍历:");
PreOrder(T);
printf("\n");
}
剑指offer--面试题27:二叉树的镜像
最新推荐文章于 2020-07-03 20:11:20 发布