剑指 Offer 27. 二叉树的镜像

思路一:递归

从根节点开始,递归的对树进行遍历,并从叶子节点开始翻转,得到镜像。如果当前遍历到的节点root的左右两棵子树都已经翻转得到了镜像,那么我们只需要交换两棵子树的位置,即可得到以root为跟节点的整颗子树的镜像。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:TreeNode* mirrorTree(TreeNode* root) {//首先确定递归的截至条件,当为空时候直接返回结束递归if(root==nullptr) return root;//不为空时候,先左边深度往下递归寻找,再右边寻找if(root->left!=nullptr) mirrorTree(root->left);if(root->right!=nullptr) mirrorTree(root->right);//找到最后一层,左右节点进行交换TreeNode* tempNode = root->left;root->left = root->right;root->right = tempNode;//返回交换后的结果return root;}
};

递归部分优化代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:TreeNode* mirrorTree(TreeNode* root) {//首先确定递归的截至条件,当为空时候直接返回结束递归if(root==nullptr) return nullptr;//不为空时候,先左边深度往下递归寻找,再右边寻找// if(root->left!=nullptr) mirrorTree(root->left);// if(root->right!=nullptr) mirrorTree(root->right);TreeNode* left = mirrorTree(root->left);TreeNode* right= mirrorTree(root->right);//找到最后一层,左右节点进行交换root->left  = right;root->right = left;//返回交换后的结果return root;}
};

LeetCode-剑指 Offer 27. 二叉树的镜像相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  2. 【LeetCode】剑指 Offer 27. 二叉树的镜像

    [LeetCode]剑指 Offer 27. 二叉树的镜像 文章目录 [LeetCode]剑指 Offer 27. 二叉树的镜像 一.递归法 二.辅助栈(或队列) 一.递归法 根据二叉树镜像的定义,考 ...

  3. 算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)

    文章目录 剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树: 样例 1: 限制: 分析 题解 rust go c++ java python 原题传送门:https://leetcode. ...

  4. JZ27 [剑指 Offer 27] 二叉树的镜像

    二叉树的镜像 Category Difficulty Likes Dislikes lcof Easy (79.61%) 311 - 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: ...

  5. 【Java】 剑指offer(27) 二叉树的镜像

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 思路 画图可 ...

  6. 剑指offer 27. 二叉树的镜像

    声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.树的镜像 定义:树的根结点相同,但是左右两个子节点交换了位置 2.解题思路 1)前序遍历树的每一个结点: 2)如果遍历到的节 ...

  7. 剑指offer——27.二叉树的镜像

    题目: 操作给定的二叉树,将其变换为源二叉树的镜像. 知识点: 无 注意: 无 代码实现: 遍历所有节点,交换当前节点的左右子节点,递归至叶子节点 /*二叉树镜像*/ void mirror(Bina ...

  8. 剑指Offer 27—二叉树的镜像

    题意 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 力扣 法1-递归 二叉树镜像定义: 对于二叉树中任意节点 root ,设其左 / 右子节点分别为 left, right:则在二叉树的镜像中 ...

  9. 剑指 Offer 27. 二叉树的镜像【无取巧解法,易于理解!】

    看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最"笨"最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法. 请 ...

  10. 剑指offer 27 二叉树的镜像

    请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / 1 3 6 9 镜像输出: 4 / 7 2 / \ / 9 6 3 1 示例 1: 输入:root = [ ...

最新文章

  1. 经纬度坐标转换xy坐标 python_在Python中使用NewtonRaphson迭代将经纬度转换为xy Mollweide地图坐标...
  2. 基于bmob的校园资料分享互助平台
  3. getElementsByName和getElementById获取控件
  4. MyBatis学习总结(一)——MyBatis快速入门
  5. linux platform匹配机制,Linux驱动中的platform总线详解
  6. 我的Objective-C系列文章
  7. BTrace简介及使用
  8. IntelliJ IDEA scala的源码设置
  9. 随机存取是什么意思_手机小白必看!12GB+256GB,同样是GB,它们到底有什么不同?...
  10. docker登录mysql数据库_Docker下搭建mysql数据库
  11. php隐藏api,PHP 在 Laravel 中动态隐藏 API 字段
  12. Posix信号量操作函数
  13. 读书笔记:《稻盛和夫 阿米巴经营 人人都是经营的主角》
  14. MFC程序设计 笔记1---综述
  15. python句柄无效_作为Windows服务运行的Python:OSError:[WinError 6]句柄无效
  16. Mindmanager2020教程篇画一个树状思维导图及试用密钥过期
  17. 阿里妈妈技术:广告间排序和广告内创意优选联合优化(CACS)
  18. 一些特种纸的品类特性
  19. 7英寸液晶显示屏应用行业 7寸TFT液晶显示屏供应
  20. ArcGIS转GeoJSON,ArcGIS打开GeoJSON(【图说GIS】)

热门文章

  1. 演示如何使用application.yml文件
  2. SNMP功能开发简介 四 net-snmp动态监听自定义端口
  3. linux控制台界面编程,控制台窗口界面的编程控制(二)
  4. array python 交集_NMS原理(非极大值抑制)+python实现
  5. c语言课程设计坦克大战,funcodec++课程设计_坦克大战
  6. 以太网输入输出处理的实现
  7. 为客户端加入输入线程
  8. mybatis 分页需要的jar包下载_牛逼哄哄的PageHelper分页插件到底牛在哪里?
  9. python发挥程度_你为什么用 Python?
  10. mock模拟的数据能增删改查吗_使用Swager API Docs和easy-mock生成模拟数据