左右子树对调一下就是二叉树的镜像了
#include <iostream>
#include <algorithm>
#include <cstring>
#include<string>
#include<vector>
#include<cmath>
#include<stack>
#include<queue>
using namespace std;
string str="543###6#7##";
int x=0;
struct Node{
char v;
Node* left;
Node* right;
Node(){
left=NULL;
right=NULL;
}
};
Node* build(Node* root){
char v=str[x];
x++;
//v=getchar();
if(v=='#'){
return NULL;
}
else{
root=new Node();
root->v=v;
root->left=build(root->left);
root->right=build(root->right);
return root;
}
}
void pre(Node* root){
if(root==NULL) return;
cout<<root->v<<" ";
pre(root->left);
pre(root->right);
}
void in(Node* root){
if(root==NULL) return;
in(root->left);
cout<<root->v<<" ";
in(root->right);
}
void mirro(Node* root){
if(root->left==NULL&&root->right==NULL){
return ;
}
Node* t=root->left;
root->left=root->right;
root->right=t;
if(root->left) mirro(root->left);
if(root->right) mirro(root->right);
}
void mirro2(Node* root){
queue<Node*> q;
q.push(root);
while(!q.empty()){
Node* t=q.front();
q.pop();
Node* t1=t->left;
t->left=t->right;
t->right=t1;
if(t->left) q.push(t->left);
if(t->right) q.push(t->right);
}
}
int main(){
Node* root=NULL;
root=build(root);
pre(root);
cout<<endl;
in(root);
cout<<endl;
//mirro(root);
//pre(root);
//cout<<endl;
mirro2(root);
pre(root);
cout<<endl;
}