题意:
            给定一棵二叉树,针对二叉树的每个节点,都交换其左右儿子节点。


方法一:
递归
思路:
        dfs(递归),先序遍历和后序遍历都可以。
        交换每个节点的左右儿子节点。

class Solution {
public:
    
    TreeNode* Mirror(TreeNode* pRoot) {
        if(pRoot==nullptr)
            return nullptr;
        TreeNode *t;
        t=pRoot->left;//交换左右儿子节点

        pRoot->left=pRoot->right;
        pRoot->right=t;
        Mirror(pRoot->left);//递归左节点
        Mirror(pRoot->right);//递归左节点
        return pRoot;
    }
};
时间复杂度:
空间复杂度:



方法二:
bfs

思路:层次遍历每个节点,并交换每个节点的左右儿子节点。


class Solution {
public:
    
    TreeNode* Mirror(TreeNode* pRoot) {
        if(pRoot==nullptr)//如果等于空,返回空
            return nullptr;
        queue<TreeNode*> q;//队列
        q.push(pRoot);
        while(!q.empty()){
            TreeNode* x=q.front();
            q.pop();
            
            TreeNode *t=x->left;//交换左右儿子节点
            x->left=x->right;
            x->right=t;
            if(x->left)//如果左节点非空,则入队列
                q.push(x->left);
            if(x->right)//如果右节点非空,则入队列
                q.push(x->right);
        }
        return pRoot;
    }
};

时间复杂度:
空间复杂度: