/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
void Mirror(TreeNode *pRoot) {
if(pRoot!=NULL)
{
TreeNode *temp=pRoot->left;
pRoot->left=pRoot->right;
pRoot->right=temp;
Mirror(pRoot->left);
Mirror(pRoot->right);
}
}
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
void Mirror(TreeNode *pRoot) {
if(pRoot!=NULL)
{
TreeNode *temp=pRoot->left;
pRoot->left=pRoot->right;
pRoot->right=temp;
Mirror(pRoot->left);
Mirror(pRoot->right);
}
}
};
//这段程序只是将pRoot转换为他的镜像,并没有输出。
如果要按层序遍历输出的话,可以采用队列queue,这里不实现
其中需要用到的queue操作有:q.empty();//判断是否为空
q.pop();//删除队首元素,不返回
q.front();//返回队首元素的值,不删除
q.push();//在队尾压入值
1初始化队列,将根结点入队
2如果队列非空,取出队首元素转3;否则结束
3访问结点,如果有左孩子入队,如果有右孩子,入队