剑指Offer-二叉树的镜像

题目描述 二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。

解题思路

转自 https://www.cnblogs.com/edisonchou/p/4774626.html

  • 先序遍历原二叉树的每个节点,如果遍历到的结点有子结点,就交换它的两个子结点。
  • 递归遍历每个节点的子节点,同样,如果遍历到的子节点有子节点,就交换它的两个子节点。
  • 当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。下图展示了求二叉树的镜像的过程:


代码

class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if(!pRoot || (!pRoot->left && !pRoot->right)) return;
        TreeNode *temp = pRoot->left;
        pRoot->left = pRoot->right;
        pRoot->right = temp;

        if(pRoot->left){
            Mirror(pRoot->left);
        }

        if(pRoot->right){
            Mirror(pRoot->right);
        }
    }
};

二刷

class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if(!pRoot) return ;
        TreeNode *temp = pRoot->right;
        pRoot->right = pRoot->left;
        pRoot->left = temp;
        Mirror(pRoot->right);
        Mirror(pRoot->left);
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义: 解题思路 通过对以上两棵树...
    繁著阅读 1,432评论 0 0
  • 第一遍刷剑指offer,每一题都会把具体的思路,以及在网上寻找的优化的点,还有自己二刷三刷之后的想法分享出来。 首...
    qming_c阅读 1,733评论 0 0
  • 本文首发于我的个人博客Suixin’s Blog原文: https://suixinblog.cn/2019/03...
    Sui_Xin阅读 1,792评论 0 0
  • 树 记录《剑指offer》中所有关于树的题目,以及LeetCode中的相似题目。 相关题目列表 题目 树是一种最常...
    wenmingxing阅读 5,285评论 2 13
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,592评论 0 25

友情链接更多精彩内容