剑指 Offer 27. 二叉树的镜像 -- 递归

2023-11-17

0 题目描述

leetcode原题链接:剑指 Offer 27. 二叉树的镜像
在这里插入图片描述

1 递归算法

根据二叉树镜像的定义, 考虑递归遍历 d f s \mathrm{dfs} dfs 二叉树,交换每个节点的左 / 右子节点, 即可生成 二叉树的镜像。
递归解析:

  1. 终止条件:当节点 root 为空时 (即越过叶节点),则返回 null ;
  2. 递推工作:
  • 初始化节点 t m p , t m p, tmp, 用于暂存 root 的左子节点;
  • 开启递归 右子节点 mirrorTree(root.right),并将返回值作为 root 的左子节点。
  • 开启递归 左子节点 mirrorTree (tmp) ,并将返回值作为 root 的右子节点。
  1. 返回值: 返回当前节点 root。
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def mirrorTree(self, root: TreeNode) -> TreeNode:
        if not root: return None
        root.left, root.right = self.mirrorTree(root.right), self.mirrorTree(root.left)
        return root     

复杂度分析:
时间复杂度: O ( N ) O(N) O(N),其中 N N N 为二叉树的节点数量, 建立二叉树镜像需要遍历树的所有节点, 占 用 O ( N ) O(N) O(N) 时间。
空间复杂度: O ( N ) O(N) O(N),最差情况下 ( ( ( 当二叉树退化为链表 ) , ), ), 递归时系统需使用 O ( N ) O(N) O(N) 大小的栈空间。

参考资料

面试题27. 二叉树的镜像(递归 / 辅助栈,清晰图解)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剑指 Offer 27. 二叉树的镜像 -- 递归 的相关文章

  • 2023Matlab初级教程- 第二章 Matlab 基础运算及函数、数据类型

    第二章 Matlab 基础运算及函数 数据类型 文章目录 第二章 Matlab 基础运算及函数 数据类型 前言 一 基础运算 二 基础函数 1 基础函数 2 练习 三 数据类型 3 1特殊变量 3 2调用优先级 3 3 1数组 3 3 2结
  • 转码日记——Javascript笔记(4)

    对象 引用数据类型 基本数据类型的不足 基本数据类型都是单一的值 值和值之间没有任何联系 如果只使用基本数据类型 那么创建的变量都是独立的个体 不能成为一个整体 对象属于复合的数据类型 在对象中可以保存多个不同数据类型的属性 分类 1 内建

随机推荐

  • 21份软件测试全流程文档模板(标准版)

    1 需求说明书 2 功能测试计划 3 功能测试用例 4 业务流程测试用例 5 系统安装配置说明书 6 阶段功能测试报告 7 性能测试计划 8 性能测试用例 9 性能测试报告 10 系统功能测试报告 11 需求变更说明书 12 用户建议说明书
  • VS中C语言调Fortran,急急急!哪位大哥能帮我一下,把以下FORTRAN语言的程序转换成C语言...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 PROGRAM MAIN IMPLICIT NONE INTEGER I NUM NMAX M MB ME MS PN PARAMETER NMAX 2000 parameter PN 1500
  • Nand flash

    一 需要什么 我们的目的是编写Nand Flash 的裸机代码 可以读写Nand Flash 那么我们应该从哪开始呢 以我为例 我板子上的cpu 是时s5pv210 板子上的nand flash的芯片是1Gbyte 的 NAND FLASH
  • Idea如何导入一个SpringBoot项目

    最近公司要求开发工具要用Idea 作为一个eclipse的老员工 记录一下Idea中遇到的坑 刚开始用Idea从Git上导入一个项目时 遇到了很多坑 网上有很多方法 我不多做介绍 只说明一下我使用的方法 1 本地新建一个文件夹 从git上导
  • email.class.php,利用PHP发送邮件Class类

    记录一下 function send code email admin kieng cn title 标题 message 内容 toemail email 定义收件人的邮箱 sendmail xxxx 163 com 发件人邮箱 send
  • C# 子类如何访问子类的方法(同一父类)

    在继承关系中 子类可以通过创建另一个子类的对象来访问其方法 下面是一个示例 展示了子类如何访问另一个子类的方法 public class Animal public virtual void Speak Console WriteLine
  • arm push/pop/b/bl汇编指令

    目录 1 push指令 2 pop指令 3 b指令 4 bl指令 5 bx指令 1 push指令 功能描述 入栈 armv7 芯片手册 Push Multiple Registers stores multiple registers to
  • day3作业

    思维导图 第2题 第3题
  • got an unexpected keyword argument ‘datasets‘的解决方法

    发生异常 TypeError note full exception trace is shown but execution is paused at init got an unexpected keyword argument dat
  • Linux下vim的常见命令操作(快速复查)

    目录 前言 1 Vim常用操作 1 1 环境参数 1 2 方向 1 3 插入命令 1 4 定位命令 1 5 删除命令 1 6 复制和剪切命令 1 7 替换和取消命令 1 8 搜索和搜索替换命令 1 9 保存和退出命令 1 10 其他命令 1
  • OpenAI不能访问有什么方法解救呢?试试这方法吧

    最近发现国内不挂代理是不能访问到openAI的接口的 为了解决这个问题 我一直在github上需在解决方案 今天终于被我找到一个大神开源了一个解决方案 下面就来看看如何做吧 整个项目的代码很简单只有几行代码 rewrites source
  • chatgpt赋能Python-pythonmul

    Pythonmul 让Python更加高效的优化工具 Python是一种被广泛应用于数据分析 科学计算 人工智能等各个领域的高级编程语言 由于其简单易学 灵活多样的编程风格以及庞大的社区支持 Python成为了许多开发者的首选语言 但是 P
  • https网站打不开怎么办?解决方法看这里

    https网站 即安装了SSL证书的网站 打不开的情况也会经常出现 不论是什么网站 只要长时间打不开就会影响到用户体验度和网站本身的流量情况 对于网站的优化也是非常不利的 如果出现了这种情况该怎么解决呢 https网站打不开可能是由多种原因
  • js 保留6位有效数字,直接舍去,不四舍五入

    function sixNum num return Math floor num 1000000 1000000 sixNum 12 123456789 12 123456
  • PCB阻焊层太近了会不会有问题?

    绘制pcb双层板 进行DCR检查 发现如下报错 于是回到pcb的界面去查看 原来是我的组焊层靠的很近 小于规则的6mil 这个报错有必要修改嘛 规则的设置如下 最小组焊层裂口是6mil 但是封装就是官网上下载下来的 是芯片封装引脚的问题 过
  • AttemptID:attempt_1557891872692_0001_r_000000_0 Timed out after 3600 secs

    背景 做kylin 的时候 执行了 hive的命令 是hive数据的重新分布 结果在reduce的时候阻塞了 查看原因为 AttemptID attempt 1557891872692 0001 r 000000 0 Timed out a
  • 公有云、私有云、混合云

    云的部署方式有很多种 如公有云 私有云 混合云等 部署在云上的SaaS主要分为公有云SaaS和私有云SaaS 行业主流的SaaS部署模式是公有云SaaS 私有云部署模式 适用于某些有特殊要求的行业和企业业务 要求有较大的私有化和定制化空间的
  • python case when用法_SQL之CASE WHEN用法详解

    简单CASE WHEN函数 CASE SCORE WHEN A THEN 优 ELSE 不及格 END CASE SCORE WHEN B THEN 良 ELSE 不及格 END CASE SCORE WHEN C THEN 中 ELSE
  • angular蚂蚁_angular4 调用api

    angular2 问题请教 angular2 通过http服务进行对后端api的远程调用 我简单的尝试了一下 发现了几个问题 记录一下 以方便查找问题 angular2 http服务的跨域问题 跨域本身就是一个很复杂的问题 angular2
  • 剑指 Offer 27. 二叉树的镜像 -- 递归

    0 题目描述 leetcode原题链接 剑指 Offer 27 二叉树的镜像 1 递归算法 根据二叉树镜像的定义 考虑递归遍历 d f s mathrm dfs dfs 二叉树 交换每个节点的左 右子节点 即可生成 二叉树的镜像 递归解析