【题目描述】
操作给定的二叉树,将其变换为源二叉树的镜像。
eg:
【官方解法】
递归方法
class Solution {
public:
TreeNode* dfs(TreeNode *r) {
if (!r) return nullptr; //判空操作
TreeNode *lval = dfs(r->left); //定义lval 来操作根节点的左子树进行递归操作
TreeNode *rval = dfs(r->right);//定义rval 来操作根节点的右子树进行递归操作
r->left = rval, r->right = lval; //最后的左右子树交换操作
return r;
}
void Mirror(TreeNode *pRoot) {
if (!pRoot) return; //判空操作
dfs(pRoot);
}
};
【B站相同思想更简便写法】
class Solution {
public:
void Mirror(TreeNode *root) {
if(!root) return;//判空
//递归
Mirror(root -> left);
Mirror(root -> right);
swap(root -> left, root -> right);//交换函数
}
};