首页 > 其他 > 详细

【剑指Offer-27】二叉树的镜像

时间:2021-03-10 21:32:20      阅读:30      评论:0      收藏:0      [点我收藏+]

问题

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

示例

技术分享图片

解答1:递归

class Solution {
public:
    TreeNode* mirrorTree(TreeNode* root) {
        if (!root) return nullptr;
        // ------ 前序操作
        swap(root->left, root->right);
        // ------
        mirrorTree(root->left);
        mirrorTree(root->right);
        return root;
    }
};

重点思路

本题只需要在遍历的过程中不断地交换左右节点即可。这道题可以用前序和后序的遍历方式。中序不行,因为中序是“左根右”的顺序,从根位置交换左右节点后,下一个遍历的是原来的左节点。

解答2:迭代

class Solution {
public:
    TreeNode* mirrorTree(TreeNode* root) {
        stack<TreeNode*> s;
        if (root) s.push(root);
        while (!s.empty()) {
            TreeNode* cur = s.top(); s.pop();
            // ------ 前序操作
            swap(cur->left, cur->right);
            // ------
            if (cur->right) s.push(cur->right);
            if (cur->left) s.push(cur->left);
        }
        return root;
    }
};

【剑指Offer-27】二叉树的镜像

原文:https://www.cnblogs.com/tmpUser/p/14514040.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!