剑指offer-----18、二叉树的镜像

1、题目描述

        操作给定的二叉树,将其变换为源二叉树的镜像。如下图:

        

2、分析

        首先传入一个树,如果树为空或者这个树的左右节点都为空,那么也就不存在所谓的镜像,直接返回。如果不是上述的特殊情况,那么使用一个中间变量,交换左右指针的值。然后递归对左子树和右子树进行同样的操作。这时需要判断,只有当它们不为空时才进行操作。

3、代码

/*
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)||((!pRoot->left)&&(!pRoot->right))) return ;
        TreeNode *temp=pRoot->left;
        pRoot->left=pRoot->right;
        pRoot->right=temp;
        if(pRoot->left!=NULL)
            Mirror(pRoot->left);
        if(pRoot->right!=NULL)
            Mirror(pRoot->right);
    }
};

4、相关知识点

        树的遍历,树的常规操作。

posted @ 2019-06-03 18:14  吾之求索  阅读(102)  评论(0)    收藏  举报