面试题27:二叉树的镜像

168 阅读1分钟

题目

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

思路

关于二叉树的镜像问题,其实只需要先序遍历交换左右子树即可,后序遍历也可以,但是中序遍历不行,如果只是输出,而不改变树的实际结构,只需要在先序遍历时先访问右子树再访问左子树即可。

代码

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;
    }

题目链接(leetcode-cn.com/problems/er…)