import java.util.*;

public class Solution {
     // 使用BFS,层次自上而下每次交换左右子树
    public TreeNode Mirror (TreeNode pRoot) {
        // write code here
        if(pRoot == null) return null;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(pRoot);
        while(!queue.isEmpty()){
            TreeNode node = queue.poll();
            // 先将当前结点的正常顺序的左右子树加入队列,之后当前节点的作用就没有了,可以交换原左右子树的位置了
            if(node.left != null){
                queue.add(node.left);
            }
            if(node.right != null){
                queue.add(node.right);
            }
            TreeNode left = node.left;
            node.left = node.right;
            node.right = left;
        }

        return pRoot;
    }
}