递归
class Solution {
public:
TreeNode* Mirror(TreeNode* pRoot) {
//空树返回
if(pRoot == NULL)
return NULL;
//先递归子树
TreeNode* left = Mirror(pRoot->left);
TreeNode* right = Mirror(pRoot->right);
//交换
pRoot->left = right;
pRoot->right = left;
return pRoot;
}
};
辅助队列层次遍历
class Solution {
public:
TreeNode* Mirror(TreeNode* pRoot) {
if(pRoot == nullptr) return nullptr;
auto *newT = new TreeNode(pRoot->val);
std::queue<TreeNode*> q;
q.push(pRoot);
while(!q.empty()){
TreeNode* cur = q.front();
q.pop();
if(cur != nullptr){
q.push(cur->left);
q.push(cur->right);
// 节点交换
TreeNode* tmp = cur->left;
cur->left = cur->right;
cur->right = tmp;
}
}
return pRoot;
}
};