码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2021-03-11 17:54:57      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:中序   offer   lan   width   交换   需要   nod   迭代   剑指offer   

问题

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

示例

技术图片

解答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】二叉树的镜像

标签:中序   offer   lan   width   交换   需要   nod   迭代   剑指offer   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!