文章目录

  • 剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树:
  • 样例 1:
  • 限制:
  • 分析
  • 题解
    • rust
    • go
    • c++
    • java
    • python
  • 原题传送门:https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/
  • 原题传送门:https://leetcode.cn/problems/invert-binary-tree/

剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树:

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

例如输入:

     4/   \2     7/ \   / \
1   3 6   9

镜像输出:

     4/   \7     2/ \   / \
9   6 3   1

样例 1:

输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]

限制:

  • 0 <= 节点个数 <= 1000

分析

  • 面对这道算法题目,二当家的陷入了沉思。
  • 仔细思考就会发现啊,其实就是把每个节点的左右孩子交换。
  • 而树结构的遍历太适合用递归套娃大法了。

题解

rust

// Definition for a binary tree node.
// #[derive(Debug, PartialEq, Eq)]
// pub struct TreeNode {//   pub val: i32,
//   pub left: Option<Rc<RefCell<TreeNode>>>,
//   pub right: Option<Rc<RefCell<TreeNode>>>,
// }
//
// impl TreeNode {//   #[inline]
//   pub fn new(val: i32) -> Self {//     TreeNode {//       val,
//       left: None,
//       right: None
//     }
//   }
// }
use std::rc::Rc;
use std::cell::RefCell;
impl Solution {pub fn mirror_tree(root: Option<Rc<RefCell<TreeNode>>>) -> Option<Rc<RefCell<TreeNode>>> {if root.is_some() {let mut mb = root.as_ref().unwrap().borrow_mut();let left = Solution::mirror_tree(mb.left.take());let right = Solution::mirror_tree(mb.right.take());mb.left = right;mb.right = left;}return root;}
}

go

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func mirrorTree(root *TreeNode) *TreeNode {if root != nil {left := mirrorTree(root.Left)right := mirrorTree(root.Right)root.Left = rightroot.Right = left}return root
}

c++

/*** 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) {TreeNode *left = mirrorTree(root->left);TreeNode *right = mirrorTree(root->right);root->left = right;root->right = left;}return root;}
};

java

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public TreeNode mirrorTree(TreeNode root) {if (root != null) {TreeNode left = mirrorTree(root.left);TreeNode right = mirrorTree(root.right);root.left = right;root.right = left;}return root;}
}

python

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def mirrorTree(self, root: TreeNode) -> TreeNode:if root:left = self.mirrorTree(root.left)right = self.mirrorTree(root.right)root.left = rightroot.right = leftreturn root

原题传送门:https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/

原题传送门:https://leetcode.cn/problems/invert-binary-tree/


非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~


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

  1. Leetcode剑指offer(五)

    Leetcode剑指offer 31从上到下打印二叉树 II(32-2.Easy) 1)题目要求 2)我的解法 3)其他解法 4)自己的优化代码 5)学到的东西 32.从上到下打印二叉树 III(32 ...

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

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

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

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

  4. leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer

    题目难度: 中等 原题链接 今天继续更新剑指 offer 系列, 这道题相比昨天那道题多了个每层打印方向不同的需求, 聪明的你想到应该如何实现了吗? 老样子晚上 6 点 45 分准时更新公众号 每日精 ...

  5. 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

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

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

  7. 【LeetCode 剑指offer刷题】树题6:28 对称二叉树(101. Symmetric Tree)

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 101. Symmetric Tree /**  * Definition for a binary tree no ...

  8. 【LeetCode 剑指offer刷题】树题19:8 二叉树中序遍历的下一个结点

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 8 二叉树中序遍历的下一个结点 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注 ...

  9. 代码随想录算法训练营第08天 | LeetCode 344.反转字符串,541. 反转字符串2,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

    LeetCode [344. 反转字符串] 题目:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**. ...

最新文章

  1. 中国内地高校ESI排名出炉:342所大学上榜
  2. linux下查看GPU版本和详情信息 CUDA版本信息 anaconda版本信息
  3. 20145202马超《网络对抗》Exp7 网络欺诈技术防范
  4. Servlet规范定义的Servlet 生命周期
  5. python语言设计学习方向_学好Python开发就业方向有哪些?
  6. 移动开发解决方案之玩转输入框
  7. Java基础学习总结(90)——Java单元测试技巧
  8. 【渝粤题库】 陕西师范大学 210021 学前儿童健康教育 作业(专升本)
  9. 考研计算机网络必考考点,计算机专业考研计算机网络考点汇总
  10. libaio-devel下载
  11. meanshift算法图解
  12. 亚马逊中国发布2018图书排行榜
  13. 培训linux系统下载,非常好的Linux培训教程集合下载
  14. TP6 接口返回三要素
  15. 笔记本电脑内外网(无线和本地网络)优先顺序选择
  16. PTA习题 计算某年某月某日是该年中的第几天
  17. bandit agent下棋AI(python编写) 通过强化学习RL 使用numpy
  18. 通达信 服务器 修改,通达信金融交易终端(开心果交易版)V2020版,修改导航菜单...
  19. 数据库分页数据被业务代码过滤后不足个数问题
  20. SuMa++: Efficient LiDAR-based Semantic SLAM

热门文章

  1. 计算机系统与用户的交互界面是,人机交互与人机界面基础知识对比分析
  2. 【JPA/ddl-auto】关于JPA下hibernate通过设置ddl-auto完成数据库自动创建表格
  3. ubuntu18.04双系统解决进入桌面后鼠标和键盘失灵问题
  4. 动态监控网卡流量异常
  5. 如何将两个excel表格合并
  6. 计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)
  7. Oracle 12c 数据库可插拔体系结构
  8. 安卓开发 高德地图定位的封装 十分钟上手
  9. 智慧城市同城小程序V4_1.0.86后端+双前端源码
  10. 如何做一名称职的CEO