剑指 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. 队列的基本原理及实现
  2. 提高效率的几个软件和快捷键
  3. ros自己写避障算法_迷雾学术篇|视觉感知的无人机动态避障(下篇)
  4. 怎么确定Oracle客户端安装成功
  5. 自然语言处理中的模式(模式1.概率化模式)
  6. 修改.html 打开方式 注册表,windows 注册表修改资料打开方式
  7. oracle中join另一个表后会查询不出一些数据_面试必备 | 8个Hive数据仓工具面试题锦集!...
  8. 深入理解Android View(转)
  9. ASP.NET - JQuery的.getJSON给Dropdownlist绑定Item
  10. 深入学习Make命令和Makefile(上)
  11. 在苹果Mac的Dock中如何添加AirDrop快捷方式?
  12. F - 最短路 HDU - 2544(最短路的模板)
  13. vs2017 项目开发 解决方案下的多个项目
  14. matlab的特殊字符(上下标和希腊字母等)
  15. canvas 画图移动端出现锯齿毛边的解决方法
  16. 拼多多校招笔试题给出三个点构成三角形的个数
  17. 【基础入门题026】佩尔数列Pell(n)
  18. 【C51定时计数器讲解】
  19. 华为员工自杀-又是加班惹得祸
  20. 百度地图全景——百度经纬度显示全景

热门文章

  1. CSP认证201312-2 ISBN号码[C++题解]:简单题
  2. Leetcode215数组中第k大的数-最小堆
  3. 《剑指offer》c++版本 17.打印从1到最大的N位数
  4. 计算机知识必备,小结||计算机基础知识点十(必备)
  5. 登录界面的滑动_【提醒】电子税务局登录方式有变化! 8月31日关闭“原方式登录”...
  6. oracle 用户 表空间绑定,ORACLE表空间绑定用户操作流程
  7. python中哈希是什么意思_在python中向量化特征哈希
  8. linux体验服务器,体验Ubuntu做服务器
  9. oracle db file sequential read,db file sequential read等待事件
  10. nod找不到服务器,node.js – 带有nodejs child_process的ssh,在服务器上找不到命令