【算法分析与设计】翻转二叉树

题目

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例

 

示例 1:

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

示例 2:

输入:root = [2,1,3]
输出:[2,3,1]

示例 3:

输入:root = []
输出:[]

思路

我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。
仔细看下题目的 输入 和 输出,输出的左右子树的位置跟输入正好是相反的,于是我们可以递归的交换左右子树来完成这道题。

其实就是交换一下左右节点,然后再递归的交换左节点,右节点
根据动画图我们可以总结出递归的两个条件如下:.

终止条件:当前节点为 null 时返回
交换当前节点的左右节点,再递归的交换当前节点的左节点,递归的交换当前节点的右节点
时间复杂度:每个元素都必须访问一次,所以是O(n)
 

代码实现

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode invertTree(TreeNode root) {if(root==null){return null;}invertTree(root.left);invertTree(root.right);  TreeNode temp=root.left;root.left=root.right;root.right=temp;return root;}
}

 运行结果

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

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

相关文章

本地运行环境工具UPUPWANK(win)和Navicat数据库管理工具

UPUPWANK安装地址:https://www.upupw.net 1.进入UPUPWANK后点击一键开启 2.新增项目 这里请千万注意80端口,如果80端口被占用了,请记住去任务管理器关闭占用80端口的进程。不然就不会成功显示。(笔者含泪警告,一晚上的…

多线程应用中的性能优化:创建合适的线程数

多线程应用中的性能优化:创建合适的线程数 在多线程应用中,为了降低延迟和提高吞吐量,我们可以采取两种主要策略:优化算法或者充分利用硬件性能。要发挥硬件的极致性能,就需要使用多线程来提高CPU或I/O的利用率。 由于…

TypeScript+Jest测试

1、初始化TypeScript工程 npm i -D typescript生成TypeScript工程配置 tsc --init代码目录 test └── src├── sum.test.ts└── sum.tssum.ts export function add(a: number, b: number): number {return a b; }sum.test.ts import { add } from ./sum;test(add …

Spring中的OAuth2

一. 什么是OAuth2 “Auth” 表示 “授权” Authorization “O” 是 Open 的简称,表示 “开放” 连在一起就表示 “开放授权”,OAuth2是一种开放授权协议。 二. OAuth2是什么 怎么用 OAuth2是目前最流行的授权协议,用来授权第三方应用&am…

信号的小波包能量谱计算(以轴承振动信号为例,Python环境)

小波分析是近30年来发展起来的数学分支,是Fourier分析划时代发展的结果,由法国工程师Morlet首先提出,后广泛应用于信号处理、图像处理与分析、地震勘探、故障诊断、自动控制等领域,小波就是小的波形,所谓“小”是指它具…

QT文件读写操作和内容提取

访问IO设备,需要先调用open()来设置正确的OpenMode(例如ReadOnly或ReadWrite) 打开设备后后,使用write() 或putChar() 写入数据到文件和设备,并通过调用read(),readLine() 或readAll() 进行读取;使用完设备后&#xf…

供应链攻击揭秘:识别、防范与应对

供应链攻击是网络安全领域的一种新兴威胁,它利用供应链中的漏洞对目标进行攻击。本文将介绍供应链攻击的概念、类型、危害,并通过具体案例阐述其影响,同时探讨如何防范供应链攻击,以提高人们对供应链攻击的认识和防范意识。 一、引…

3、Jenkins持续集成-Jenkins安装和插件管理

文章目录 一、Jenkins安装1. 安装JDK2. 获取jenkins安装包3. 安装包上传到服务器,进行安装4. 修改Jenkins配置(1)低版本Jenkins的rpm包(2)高版本Jenkins的rpm包 5. 启动Jenkins6. 打开浏览器访问7. 获取并输入admin账户…

【漏洞复现】netgear路由器 boarddataww 存在RCE漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

HTML发展史

为什么要讲 HTML 发展史呢? 唐太宗告诉我们: 以铜为镜,可以正衣冠;以史为镜,可以知兴替;以人为镜,可以明得失。 那了解了 HTML 的发展史,可以知道什么呢? 答案是兼容 国内在 淘宝…

FDM3D打印系列——美纹纸遮挡喷漆

大家好,我是阿赵。   自从上次尝试了水补土和喷漆,发现效果不错之后,我就接着进行第二次的尝试了。   这次打印的模型是这个拳皇里面的卢卡尔,别看拍照好像很高大,其实这个模型很小的,只有10cm左右的高…

C#获取HTML源码

C#获取HTML源码 2024年03月23日记录 以前的那个从网上找到的方法, 在一些网站上用不了,如17K,取出来的是乱码,要么就是一坨JS,好像是用JS又重新加载了什么的 using System; using System.Collections.Generic; using System.We…

面试 Java 基础八股文十问十答第二十期

面试 Java 基础八股文十问十答第二十期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)HashMap 和 Concurre…

打造全网最全Doris面试题(100个问题2万字)

在大数据领域,Doris作为一款高性能、易扩展的MPP(Massively Parallel Processing)分析数据库,受到了越来越多企业的青睐。作为一名大数据架构师,了解Doris的核心特性和面试题是至关重要的。本文将为您提供一系列Doris面试题的参考答案,帮助您在面试中游刃有余,同时也为您…

PySide6-YOLO8目标检测、追踪可视化界面

目录 项目地址实现效果DetectTrack 项目地址 https://github.com/zhengjie9510/pyside-yolo 实现效果 Detect Track

windows安装ssh

一、下载ssh https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.1.0.0p1-Beta/OpenSSH-Win64.zip 二、安装ssh 解压到C:\Program Files\OpenSSH-Win64 配置环境变量 把 C:\Program Files\OpenSSH-Win64 加到path环境变量里面 C:\Program Files\OpenSSH-Win64&…

JDK1.8新特性——Stream流方法引用

文章目录 Stream流如何获取流水线Stream流中间方法Stream终结方法 方法引用引用静态方法引用成员方法引用构造方法类名引用成员方法引用数组构造方法 Stream流 Stream流是JDK8中提供的一种新特性 Stream流的使用步骤: 先得到Stream流,把数据放到流中使…

七、大模型-什么是Fine-tuning

好文推荐 推荐一篇比较透彻的介绍 对于深度学习模型中的 Fine-tuning(微调)操作,以下是详细介绍和原理说明: 什么是 Fine-tuning(微调)? Fine-tuning 是指在一个已经训练好的模型基础上&am…

Arcgis 导入经纬度坐标、导出经纬度坐标

目录 一、导入经纬度坐标 1、在excel中准备好经纬度坐标的数据表 2、将数据放入Acrgis的工作路径 3、在arcgis中添加数据 4、显示经纬度坐标点 5、导出为shp矢量文件 二、根据shp的经纬度坐标点导出成经纬度坐标 1、右键选择打开属性表 2、在属性表的菜单下拉栏里找到…

三、阅读器的开发--1、项目准备

1、项目准备 1.1、项目搭建 我用的脚手架是vue cli 5.0的,通过vue create 项目名称来创建的项目 上下箭头选的是最后那个,是指手动配置,然后回车 空格选中下面这些,然后回车 下图最后那个指我们所有的配置在哪里配置&#xff0…