/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pRoot TreeNode类 
 * @return TreeNode类
 */
 //方法:递归。递归结束条件是深度为0
 //镜像就是把左子树和右子树对换
 //也就是,不断地深入递归,即自上往下地将左右子树镜像
struct TreeNode* Mirror(struct TreeNode* pRoot ) 
{
    // write code here

    if(pRoot == NULL)
    {
        return NULL;
    }
    
    //镜像就是把左子树和右子树对换
    struct TreeNode *temp,*pR = pRoot;  //注意只有pR被赋值了
    // struct TreeNode *temp;
    temp = pR->left;
    pR->left = pR->right;
    pR->right = temp;

    //也就是,不断地深入递归,即自上往下地将左右子树镜像
    Mirror(pR->left );
    Mirror(pR->right );
    return pRoot;

}