用广度优先搜索的思路还是很简单的。

class Solution {
  public:
    TreeNode* Mirror(TreeNode* pRoot) {
        if (!pRoot) return pRoot;
        vector<TreeNode*> query;
        query.push_back(pRoot);
        TreeNode* p, * tmp, * l, * r;
        while (!query.empty()) {
            p = query[0];
            tmp = p->left;
            p->left = p->right;
            p->right = tmp;
            query.erase(query.begin());
            if (p->left) query.push_back(p->left);
            if (p->right) query.push_back(p->right);
        }
        return pRoot;
    }
};