题目
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
思路
关于二叉树的镜像问题,其实只需要先序遍历交换左右子树即可,后序遍历也可以,但是中序遍历不行,如果只是输出,而不改变树的实际结构,只需要在先序遍历时先访问右子树再访问左子树即可。
代码
class Solution {
public:
TreeNode* mirrorTree(TreeNode* root) {
if(root){
swap(root->left,root->right);#先序遍历
mirrorTree(root->left);
mirrorTree(root->right);
#swap(root->left,root->right);后续遍历
return root;
}
return NULL;
}
};
- 不改变树的实际结构
void mirrorTree(TreeNode* root) {
if(root){
cout<<root->val;
mirrorTree(root->right);
mirrorTree(root->left);
}
return;
}