描述

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

数据范围:二叉树的节点数[0,1000] , 二叉树每个节点的值 [0,1000]

要求: 空间复杂度 O(n)。本题也有原地操作,即空间复杂度 O(1) 的解法,时间复杂度 O(n)

比如:

源二叉树

镜像二叉树

示例1

输入:

{8,6,10,5,7,9,11}

返回值:

{8,10,6,11,9,7,5}

说明:

如题面所示    

示例2

输入:

{}

返回值:

{}

思路:

这个题怎么想到用递归做呢,是从题目里的“有原地翻转的解法”得来的灵感。因为是全体镜像,所以不能简简单单地交换节点所对应的值,所以就是交换左指针和右指针指向的两节点,然后不断重复这个动作,到什么时候为止呢?不能交换的时候,也就是不存在结点的时候就不交换了。

这种代码也考虑到单支树了,不必另外写仅有一个节点的情况。举个例子,因为是先左再右,所以如果结构仅仅是左边单支树的话,在第一次遍历的时候就不会走到右子节点的那一句代码,是在整个镜像都完成了之后才走右节点,而右节点又是NULL,所以每一步就都直接返回了。

/*** struct TreeNode {*  int val;*   struct TreeNode *left;* struct TreeNode *right;*    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pRoot TreeNode类 * @return TreeNode类*/TreeNode* Mirror(TreeNode* pRoot) {// write code here//用递归!if(!pRoot)return NULL;else{TreeNode* ptr=pRoot->left;pRoot->left=pRoot->right;pRoot->right=ptr;Mirror(pRoot->left);Mirror(pRoot->right);}return pRoot;}
};

剑指offer-JZ27 二叉树的镜像(C++,附思路)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 《剑指Offer》 二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...

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

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

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

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

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

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

最新文章

  1. cad自动填写页码lisp_你被论文格式搞崩过几次心态,解决目录和页码,其它都不叫事...
  2. 求列表最大元素不用max_python3实现从一个无序列表中求取连续元素之和中最大的和...
  3. flask 定义数据库关系(一对多) --
  4. JavaScript 详说事件机制之冒泡、捕获、传播、委托
  5. Android中视图重绘的方法
  6. 7-9 计算摄氏温度 (5 分)
  7. python2.7初学(〇)
  8. 2017人工智能大会核心技术流出_机器人竟然已经能干这个了?
  9. 蓝牙版本avrcp怎么选_新款AirPods怎么选?还是不算好耳机,但是最配的iPhone蓝牙耳机...
  10. Google Guice 快速入门
  11. 测试报告html模板,测试报告模板(标准版)
  12. Android Studio中AndroidManifest.xml文件中application标签
  13. Favicon网页收藏图标在线制作PHP网站源码/ICO图片在线生成/支持多种图片格式转换
  14. VHDL n进制计数器
  15. Win10如何取消开机密码?Win10取消开机密码步骤
  16. Ubuntu网络域名解析失败记录
  17. 大型破碎设备之颚式破碎机简介
  18. 个人网站必备的 10 个开源后台管理UI库
  19. PMP证书含金量再次提升,纳入北京工作居住证办理范围
  20. 基于互联网的温度采集系统

热门文章

  1. linux 磁盘控制器,linux – 戴尔R710上的PERC 6 / i RAID:单个控制器上的慢速磁盘…… RAID10?...
  2. linux鼠标滚轮命令,关于linux:如何使用鼠标滚轮在tmux面板中滚动?
  3. 问题:连接查询和子查询的区别和连接及优劣?
  4. JavaScript RegExp(正则表达式) 对象
  5. 「云+未来」上海峰会,报名开启
  6. Css制作table细线表格
  7. Python 爬虫学习2
  8. 常见的Activity Action Intent常量
  9. Flutter SliverAnimatedOpacity 透明渐变动画效果
  10. 精通Android自定义View(十八)自定义圆形菊花加载转圈效果