剑指 Offer 27. 二叉树的镜像

news2025/2/27 5:21:22

剑指 Offer 27. 二叉树的镜像

难度: e a s y \color{Green}{easy} easy


题目描述

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

例如输入:
在这里插入图片描述

镜像输出:
在这里插入图片描述

示例 1:

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

限制:

0 < = 节点个数 < = 1000 0 <= 节点个数 <= 1000 0<=节点个数<=1000

注意:本题与主站 226 题相同:https://leetcode-cn.com/problems/invert-binary-tree/


算法

(递归)

write here...
根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的 左 / 右子节点,即可生成二叉树的镜像。

递归解析:

终止条件: 当节点 root 为空时(即越过叶节点),则返回 null ;

递推工作:

  • 开启递归 左子节点 mirrorTree(root.left) ,并将返回值作为 root 的 左子节点 。
  • 开启递归 左子节点 mirrorTree(root.right) ,并将返回值作为 root 的 右子节点 。

返回值: 返回当前节点 root ;

复杂度分析

  • 时间复杂度 O ( n ) O(n) O(n),其中 n n n 是链表的长度。需要遍历链表一次

  • 空间复杂度 : O ( 1 ) O(1) O(1)

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) return NULL;
        auto left = mirrorTree(root->left);
        auto right = mirrorTree(root->right);
        root->left = right;
        root->right = left;
        return root;

    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Office 365 备份与恢复

Microsoft Office 365中的不同服务几乎可以随时访问&#xff0c;这要归功于Microsoft的99.9%正常运行时间记录。但是&#xff0c;Office 365步履蹒跚的一个方面是提供了一种从意外数据丢失中恢复的方法。Microsoft 提供的数据保留功能并非适用于所有数据丢失情况的可行解决方案…

亿级高并发电商项目-- 实战篇 --万达商城项目 十二(编写用户服务、发送短信功能、发送注册验证码功能、手机号验证码登录功能、单点登录等模块)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域新星创作者 &#x1f4d5;系列专栏&#xff1a;前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

Leetcode力扣秋招刷题路-0082

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#…

这6个视频剪辑素材库,你一定要知道~

推荐5个免费商用视频素材网站&#xff0c;建议收藏哦&#xff01; 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 网站素材量很大&#xff0c;有设计、图片、音频、视频等超多素材&#xff0c;大部分都能免费下载。视频素材都很高清&#xff0c;有自然、人物、科技、农业…

前端页面开发模块组织结构

模块组织 任何超过 1000 行的 CSS 代码,你都曾经历过这样的体验: 这个 class 到底是什么意思呢?这个 class 在哪里被使用呢?如果我创建一个 xxoo class,会造成冲突吗?Reasonable System for CSS Stylesheet Structure 的目标就是解决以上问题,它不是一个框架,而是通过…

Freemarker快速入门

freemarker提供很多指令用于解析各种类型的数据模型参考地址&#xff1a;http://freemarker.foofun.cn/ref_directives.html一.测试搭建Freemarker的运行环境并进行测试.1.添加Freemarker与SpringBoot的整合包XML <!-- Spring Boot 对结果视图 Freemarker 集成 --> <d…

互斥锁原理

如果有交互的公共数据区域&#xff0c;我们需要让一个进程先执行&#xff0c;一个进程后执行&#xff0c;互斥锁就是用锁的方式让他们的竞争关系变得有序。 临界区问题 临界区是在程序之间有公共数据交互时产生的区域&#xff0c;没有两个进程可以在它们各自的临界区同时执行…

我的 System Verilog 学习记录(1)

引言 技多不压身&#xff0c;准备开始学一些 System Verilog 的东西&#xff0c;充实一下自己&#xff0c;这个专栏的博客就记录学习、找资源的一个过程&#xff0c;希望可以给后来者一些借鉴吧&#xff0c;IC找工作的都加把油&#xff01; 本文是准备先简单介绍一下环境搭建…

C++11智能指针std::shared_ptr介绍及使用

介绍 shared_ptr是一种智能指针(smart pointer)&#xff0c;作用有如同指针&#xff0c;但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting),比如我们把只能指针赋值给另外一个对象,那么对象多了一个智能指针指向它,所以这个时候引用计数…

洛谷P1125 [NOIP2008 提高组] 笨小猴 C语言/C++

[NOIP2008 提高组] 笨小猴 题目描述 笨小猴的词汇量很小&#xff0c;所以每次做英语选择题的时候都很头疼。但是他找到了一种方法&#xff0c;经试验证明&#xff0c;用这种方法去选择选项的时候选对的几率非常大&#xff01; 这种方法的具体描述如下&#xff1a;假设 maxn\…

【C++】2.类和对象(上)

1.面向过程和面向对象 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间的交互完成。 2.类的引入…

【发版或上线项目保姆级心得】

第一步&#xff1a;先在正式环境创建数据库/新增表格或者字段 在数据库表中增加字段/表格&#xff0c;不会报错。 但是切记不要过早数据库字段/表格或者删除字段/表格 第二步&#xff1a;修改配置文件 先将正式环境需要的配置给写好&#xff0c;包括但不仅限于数据库配置、…

秋招面试问题整理之机器学习篇

文章目录随机森林在决策树的哪些方面做出了改进随机森林里每棵树的权重不一定会变成什么模型方差和偏差&#xff0c;正则化解决的是方差大还是偏差大的问题正则化的方法总结了解VC维吗svd了解吗随机森林在决策树的哪些方面做出了改进 回答思路&#xff1a; 随机森林和决策树有…

同步syslog日志到服务端

目录结构前言Windows下安装syslog服务端&#xff08;Syslog Watcher Manager&#xff09;Linux下syslog服务端搭建java同步日志代码块日志同步测试前言 系统同步日志到syslog服务器&#xff0c;此文章记录以下内容&#xff1a; Windows下syslog服务端&#xff08;Syslog Watc…

主食吃什么最健康?

又到了订饭的时候了&#xff0c;今天打算吃什么呢&#xff1f;面包&#xff1f;炒饭&#xff1f;面条&#xff1f;还是粥&#xff1f;上面说到的这些都是主食。大家都知道主食能带来很强的饱腹感&#xff0c;而且还是身体最重要、最经济的营养来源。但五谷杂粮&#xff0c;营养…

【项目】好用快搜文档搜索工具

文章目录一、项目分析1、项目调研2、项目需求3、开发环境4、项目知识框架5、项目实现基本理论二、项目设计整体框架设计代码框架设计三、项目实现1、系统工具模块目录遍历2、数据库管理模块2.1、封装数据库管理类(SqliteManager)2.2、封装数据管理类(DataManager)3、扫描模块4、…

紫外线生物素标记Biotin-PEG2-alkyne,UV Cleavable Biotin-PEG2-alkyne

UV Cleavable Biotin-PEG2-alkyne含有紫外线可切割碎片(containsa UV cleavable Fragemnt)&#xff0c;试剂通过点击化学与含叠氮化物的分子反应。点击化学生物素标记试剂包含各种点击化学官能团修饰的生物素&#xff0c;适用于各种生物素标记实验。1.UV Cleavable Biotin-PEG2…

威马汽车:跃马扬鞭未竟,鞍马劳顿难行?

“活下去&#xff0c;像牲口一样地活下去。” 威马汽车创始人、董事长兼CEO沈晖1月在社交媒体上分享的电影台词&#xff0c;已然成为威马近况的真实写照。 来源&#xff1a;新浪微博威马汽车沈晖Freeman 最近&#xff0c;网上出现了大量关于“威马汽车将实施全员停薪留职”的…

【JavaScript速成之路】JavaScript数据类型转换

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言数据类型转换1&#xff0c;转换为字符串型1.1&#xff0c;利用“”拼接转换成…

8、接口与面向接口编程

目录一、接口的基本概念二、类型断言三、面向接口编程一、接口的基本概念 接口的定义&#xff1a;接口是一组行为规范的集合 type Transporter interface { //定义接口&#xff0c;通常接口名以er结尾//接口里面只定义方法&#xff0c;不定义变量move(src string, dest strin…