剑指 Offer(第2版)面试题 27:二叉树的镜像

【剑指offer】面试题27 二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像,在给定的树上操作,不需要返回新的树。 题目分析 观察源二叉树和镜像二叉树发现,根节点8相同,再观察根的左右(6,10)子节点,发现源二叉树根的左右(6,10)节点和镜像二叉树的左右节点(10,6)互换了位置继续比较剩余的子节点依然是相互交换了位置,所以根据这个结论可以得到,除根节点外,我们递归的去交换了左右孩子节点即可完成要求。 注:如果是空... 阅读详情

剑指 Offer(第2版)面试题 27:二叉树的镜像

剑指 Offer(第2版)面试题 27:二叉树的镜像

题目来源:38. 二叉树的镜像

解法1:递归

我们可以发现镜像后的树就是将原树的所有节点的左右儿子互换。

所以我们递归遍历原树的所有节点,将每个节点的左右儿子互换即可。

代码 1:自底向上互换

/**
 * 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:
	void mirror(TreeNode *root)
	{
		if (root == nullptr)
			return;
		if (root->left == nullptr && root->right == nullptr)
		    return;
		if (root->left)
		    mirror(root->left);
		if (root->right)
		    mirror(root->right);
		// swap(root->left, root->right)
		TreeNode *temp = root->left;
		root->left = root->right;
		root->right = temp;
	}
};

代码 2:自顶向下互换

/**
 * 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:
	void mirror(TreeNode *root)
	{
		if (root == nullptr)
			return;
		if (root->left == nullptr && root->right == nullptr)
		    return;

		// swap(root->left, root->right)
		TreeNode *temp = root->left;
		root->left = root->right;
		root->right = temp;
		
		if (root->left)
		    mirror(root->left);
		if (root->right)
		    mirror(root->right);
	}
};

复杂度分析:

时间复杂度:O(n),其中 n 是二叉树的节点个数。原树中每个节点仅被遍历一次。

空间复杂度:O(depth),其中 depth 是二叉树的深度。

《剑指offer》Java版 一、引言 《剑指offer》可谓是程序猿面试的神书了,在面试中帮了我很多,大部分面试的算法题都会遇到原题或者是类似的题。但是书上的代码都是C版的,我在这里整理了一份Java版的代码供大家学习参考,这些代码我都是在OJ上跑过全AC的,所以正确性你大可放心。 二、目录 1赋值运算函数 2单例设计模式 3二维数组中查找目标值 4替换字符串中的空格 5从尾到头打印链表 6由前序和中序遍历重建二叉树 7用两... 阅读详情

相关推荐

牛客网剑指Offer - java版

剑指Offer - java版 文章目录剑指Offer - java版JZ01JZ02 替换空格JZ03 从尾到头打印链表JZ04 重建二叉树JZ05 用两个栈实现队列JZ06 旋转数组的最小数字JZ07 斐波那契数列JZ08 跳台阶问题JZ09 青蛙跳台阶JZ10 矩形覆盖JZ11 二进制中1的个数JZ12 数值的整数次方JZ13 调整数组顺序,使奇数位于偶数前面JZ14 链表中倒数第k个结点JZ15 反转链表JZ16 合并两个排序的链表JZ17 树的子结构JZ18 二叉树的镜像JZ19 顺时针打印矩阵J

shawfi的博客 1270

剑指Offer(第2版)——面试题27:二叉树的镜像

题目: 请完成一个函数,输入一棵二叉树,该函数输出它的镜像。 1.解题思路: 先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。 当交换玩所有非叶节点的左,右子节点之后,就得到了树的镜像。 举例: 观察到两棵树的根节点相同,但其左右子节点交换了位置,所以首先交换根节点的两个子节点; 我们注意到值为10、6节点的子节点仍然保持不变,因此我们还需要交换这两个节点的左右...

qq_32486393的博客 189

探索Three.js:利用ShaderMaterial实现动态着色器特效

本文深入探讨了Three.js中ShaderMaterial的应用,指导开发者利用GLSL编写自定义着色器实现动态特效。文章从核心概念GLSL、Uniforms与Attributes讲起,通过创建动态颜色变化平面的实战案例,逐步进阶到实现波纹扩散与动态光影等高级效果,并提供了性能优化与调试技巧,帮助读者掌握创建高性能WebGL视觉特效的关键技能。

weixin_29250403的博客 201

大神整理的剑指Offer【所有面试题汇总】

    剑指Offer学习   剑指Offer这本书已经学习完了,从中也学习到了不少的东西,现在做一个总的目录,供自已和大家一起参考,学如逆水行舟,不进则退。只有不断地学习才能跟上时候,跟得上技术的潮流! 所有代码下载【https://github.com/Wang-Jun-Chao/coding-interviews】 目录 第01-10题 【剑指Offer学习】【面试题02:...

晓飛的博客 3万+

用化学方法nmp溶剂从佳能cmos传感器上剥离拜耳矩阵和微透镜

将光刻胶暴露于 NMP 溶剂中 10-15 分钟,并进行轻微的机械搅拌,将溶解的光刻胶从基材表面带走,即可去除大部分光刻胶,之后再进行第二次溶剂浴,以洗去微量含有光刻胶的溶剂。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。在我看来,这是必读的;

qq_40247880的博客 1479

统信UOS开发环境支持Java

集成了JDK和多种IDE,为开发者提供了从代码编写、编译、调试到部署的一站式开发解决方案。

RZer的博客 2256

【剑指offer】Java版代码(完整版)

一、引言 《剑指offer》可谓是程序猿面试的神书了,在面试中帮了我很多,大部分面试的算法题都会遇到原题或者是类似的题。但是书上的代码都是C版的,我在这里整理了一份Java版的代码供大家学习参考,这些代码我都是在OJ上跑过全AC的,所以正确性你大可放心。 二、目录 赋值运算函数 单例设计模式 二维数组中查找目标值 替换字符串中的空格 从尾到头打印链表 由前序和中序遍历重建二叉树 用两个

白夜行 7万+

基于C#的软PLC梯形图编辑器开发实战

本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。

weixin_28314575的博客 404

剑指offer面试题27(java版):二叉树的镜像

welcome to my blog 剑指offer面试题27(java版):二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 思路 使用递归 只要当前节点不是null, 就交换其左右子节点 不带返回值的递归 public class Solution { public void Mirror(TreeNode root) { if(root !=...

littlehaes的博客 329

服务器搭建原神私服教程

项目的稳定版分支提供了编译好的服务端程序,但是博主觉得还是用dev版本的比较好。dev版本需要自己编译的,不要听到编译这两个字就头大,相反,这个服务端的编译相当简单。把文件中的两个IP地址127.0.0.1修改为你服务器的地址,修改完成后按 esc 输入 :wq。Mongodb作为服务端的数据库使用,我们这里安装最新版的Mongodb5。注意:如果想要使用最新版的服务端,必须安装>=17版本的java。tmux可以保证你关掉控制台的时候,程序依然继续运行。至此,服务端所需要的运行环境全部配置完成。

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 1万+

8-bit量化在YOLOv11中的部署实践-(使用PTQ、QAT量化技术实现模型体积压缩和推理加速)

本文系统介绍了YOLOv11模型量化技术,主要包括三个核心部分:首先阐述模型量化的基础理论,包括量化分类、数学原理和性能影响;其次分析YOLOv11架构特点及其量化敏感层;最后详细讲解训练后量化(PTQ)的具体实现流程。研究表明,8-bit量化可使YOLOv11模型大小缩减至1/4,推理速度提升1.7-2.3倍,精度损失控制在1%以内。文章特别强调了校准算法选择(如最小最大值法和KL散度法)对量化效果的关键影响,并提供了完整的代码实现示例,为YOLOv11的高效部署提供实用指导。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1629

别再翻了,面试二叉树看这 11 个就够了~

写在前边 数据结构与算法: 不知道你有没有这种困惑,虽然刷了很多算法题,当我去面试的时候,面试官让你手写一个算法,可能你对此算法很熟悉,知道实现思路,但是总是不知道该在什么地方写,而且很多边界条件想不全面,一紧张,代码写的乱七八糟。如果遇到没有做过的算法题,思路也不知道从何寻找。面试吃了亏之后,我就慢慢的做出总结,开始分类的把数据结构所有的题型和解题思路每周刷题做出的系统性总结写在了 Github...

小鹿动画学编程 12万+

2023年五一数学建模 | 第二十届五一数学建模C题:“双碳”目标下低碳建筑研究

2023年五一数学建模 | 第二十届五一数学建模C题:“双碳”目标下低碳建筑研究

前程算法屋的博客 1381

剑指offer | 面试题27:二叉树的镜像

转载本文章请标明作者和出处 本文出自《Darwin的程序空间》 本文题目和部分解题思路来源自《剑指offer》第二版 开始行动,你已经成功一半了,献给正在奋斗的我们 题目 请完成一个函数,输入一颗二叉树,该函数出处它的镜像。二叉树的节点定义如下 public class TreeNode { public int val; public TreeNode left; ...

程序员大航子 1万+

使用 Simulink 进行电力电子系统的效率优化仿真

电力电子系统(Power Electronics System)是现代电力系统和工业自动化中的关键组成部分,广泛应用于可再生能源发电、电动汽车、不间断电源(UPS)、电机驱动等领域。为了提高系统的整体性能和经济性,必须对电力电子系统的效率进行优化。效率优化的目标是最大化系统的能量转换效率,减少损耗,从而提高系统的可靠性和经济效益。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电力电子系统的效率优化策略。本教程将详细介绍如何使用 Simulink 进行电力电子系统的效率优化仿真。

xiaoheshang_123的博客 356

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

《剑指Offer》解题目录(更新完毕)

题目来源于LeetCode上的《剑指Offer》,这里做一个目录方便大家查找。另外有本人的LeetCode解题目录、《程序员面试金典》可点击链接查看。

Michael是个半路程序员 6162

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

力扣剑指offer——二叉树篇

✔✨前言OJ链接:从上到下打印二叉树题目描述: 解题思路:首先读懂题意,这道题就是一个 层序遍历二叉树,但是需要返回到一个数组中。具体步骤:代码如下: 剑指 Offer 32 - II. 从上到下打印二叉树 II OJ链接:从上到下打印二叉树 II题目描述:解题思路:这道题和上一道题思路一致,只是这道题返回的是一个二维数组,简单的来说,就是在原来的一维数组上,再嵌套了一层数组,这道题需要注意几个细节,如下:代码如下: 剑指 Offer 32 - III. 从上到下打印二叉树 III OJ链接:从上到下打

Biteht的博客 1514

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

剑指Offer(Python多种思路实现):二叉树的镜像

剑指Offer(Python多种思路实现):二叉树的镜像 面试27题: 题目:二叉树的镜像 题:操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \...

weixin_44151089的博客 1013

【剑指Offer学习】【所有面试题汇总】

剑指Offer学习  剑指Offer这本书已经学习完了,从中也学习到了不少的东西,现在做一个总的目录,供自已和大家一起参考,学如逆水行舟,不进则退。只有不断地学习才能跟上时候,跟得上技术的潮流!目录第01-10题【剑指Offer学习】【面试题02:实现Singleton 模式——七种实现方式】【剑指Offer学习】【面试题03:二维数组中的查找】【剑指Offer学习】【面试题04:替换空格】【剑指O

https://github.com/Wang-Jun-Chao 5万+

《剑指Offer》Java版目录(源码下载)

《剑指Offer》PDF版下载:点我书中全部50道题目的Java实现如下,java源码下载:点我剑指Offer面试题1面试题2单例模式 剑指Offer面试题3二维数组查找 剑指Offer面试题4替换空格 剑指Offer面试题5反向打印链表 剑指Offer面试题6重建二叉树(根据前序中序输出后序) 剑指Offer面试题7用两个栈实现队列(附带用两个队列实现栈) 剑指Offer面试题8旋转数

login_sonata的博客 4387

剑指Offer(第一版)

除了剑指Offer第一版书中提到的思路,更有剑走偏锋的刁钻题解,欢迎一起变强 热点知识:快速幂(11)、回溯(12)、全排列(12)、斐波那契数列问题转化为求矩阵的n次方(9)、二叉树的遍历(18) 面试题1:赋值运算符函数 面试题2:实现Singleton模式 面试题3:二维数组中的查找 面试题4:替换空格 面试题5:从尾到头打印链表 面试题6:重建二义树 面试题7 :用两个栈实现队列 面试题8 :旋转数组的最小数字 面试题9 :斐波那契数列 面试题10 :二进制中1的个数 面试题11 :数值的整数次方.

qq_43808700的博客 3052

【LeetCode & 剑指offer刷题】树题7:27 二叉树的镜像

【LeetCode & 剑指offer刷题】树题7:27 二叉树的镜像 【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...) 27 二叉树的镜像   题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜...

技术改变世界 708

LeetCode 剑指Offer 面试题27. 二叉树的镜像

LeetCode 剑指Offer 面试题27. 二叉树的镜像

TrueDei 1307

【剑指offer】面试题27:二叉树的镜像

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 牛客网题目链接:https://www.nowcoder.com/questionTerminal/564f4c26aa584921bc75623e48ca3011  如下图所示:两棵互为镜像的二叉树: 仔细分析这两棵树的特点,看看能不能总结出求镜像的步骤。这两棵树的根节点相同,但它们的左右两个子节点交换了位置。因此我们不妨...

Java学习 415

【剑指offer】剑指offer汇总版

文章目录剑指offer汇总3.数组中重复的数字 ★题目描述1.HashSet2.利用下标4.二维数组中的查找 ★1.暴力破解法2.线性查找5.替换空格 ★[面试题05. 替换空格](https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/)迭代6.从尾到头打印链表 ★1.使用栈2.递归法3.头插法【ps】7.重建二叉树 ★8.用两个栈实现队列 ★9.斐波那契数列 ★1.使用递归2.记忆化递归法3.动态规划4.循环求余法10.青蛙跳台阶问题 ★10-2 变

芝兰生于深谷,不以无人而不芳 1623

《剑指Offer》-面试题Python实现合集

《剑指Offer》作为互联网行业求职必看的书籍,其中收录了各大公司招聘时常问到的一些面试题,对于大家通过技术面颇有裨益。因此这个月我也花了接近三周早上的时间,用于通览全书。由于书中是用C++实现的,而本人主要使用Python,因此在掌握解题思路后,采用Python对每个面试题进行了重构。本着先过一遍再慢慢消化和吸收的原则,仓促完成了所有面试题的重构。如有问题,欢迎大家交流讨论~ 全部代码放在了Gi...

kabuto_hui的博客 2662
上一篇: Leetcode1038. 从二叉搜索树到更大和树
下一篇: 剑指 Offer(第2版)面试题 20:表示数值的字符串
UestcXiye
博客等级 码龄8年 9032粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值