leetcode 226. 翻转二叉树 java解法

题目描述

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

翻转一棵二叉树意味着交换每个节点的左右子树。我们可以使用递归的方法,从根节点开始,对每个节点进行如下操作:

交换当前节点的左右子树。
递归地翻转当前节点的左子树。
递归地翻转当前节点的右子树。

递归的终止条件是当前节点为 null,即叶子节点。
解法

class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}
}public class Solution {public TreeNode invertTree(TreeNode root) {// 递归终止条件if (root == null) {return null;}// 交换当前节点的左右子树TreeNode temp = root.left;root.left = root.right;root.right = temp;// 递归翻转左子树和右子树invertTree(root.left);invertTree(root.right);return root;}// 辅助函数:打印二叉树public void printTree(TreeNode root) {if (root != null) {System.out.println(root.val);printTree(root.left);printTree(root.right);}}public static void main(String[] args) {Solution solution = new Solution();// 构造二叉树//       4//      / \//     2   7//    / \ / \//   1  3 6  9TreeNode root = new TreeNode(4);root.left = new TreeNode(2);root.right = new TreeNode(7);root.left.left = new TreeNode(1);root.left.right = new TreeNode(3);root.right.left = new TreeNode(6);root.right.right = new TreeNode(9);// 执行翻转操作TreeNode invertedRoot = solution.invertTree(root);// 输出结果System.out.println("翻转后的二叉树:");solution.printTree(invertedRoot);}
}

时间复杂度分析

递归函数需要访问每个节点恰好一次,因此时间复杂度为 O(n),其中 n 是树中节点的数量。
空间复杂度分析

递归函数在递归过程中使用的栈空间的最大深度等于树的高度,最坏情况下,树是一个链表结构,高度为 n,因此空间复杂度为 O(n)。

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

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

相关文章

Vscode连接外部虚拟环境

如果vscode工程目录里面有一个超级大的虚拟环境文件夹,怎么说都不是一件优雅的事,因此我们希望这个虚拟环境在工程目录外部,我们开始: 1. 复制虚拟环境目录路径:E:\envs\test 2. 在vscode中打开文件夹,CT…

Python教程:一文弄懂Python字符串(很详细)

字符串是计算机编程中表示文本数据的一种数据类型。在Python和许多其他编程语言中,字符串是由字符序列组成的不可变序列,可以包含字母、数字、符号以及空格等字符。字符串通常用引号括起来表示,可以使用单引号()、双引…

一文详解WebView,不好理解就想想iframe,类比后秒懂了。

Hi,我是贝格前端工场,又到了给大家做技术扫盲的时候,本文讲一讲webview,有些老铁觉得很难懂,其实借助iframe来中转一下,就好理解了。 WebView是一种用于在应用程序中显示Web内容的组件。它可以嵌入到应用程…

【C++】关键字:auto

文章目录 1. 介绍2. 如何使用 1. 介绍 从C11开始,auto变成了类型指示符(之前auto并不是这个作用)。使用auto定义变量时必须对其进行初始化,在编译阶段编译器自动推导auto变量的实际类型。因此auto并非是一种“类型”的声明&#…

爬取某乎专栏文章html格式,并转到pdf保存

import os import re import requests import pdfkit import parsel 1.先获取html文章内容获取小赖 2.把html文件转成pdffilename html\\ if not os.path.exists(filename):os.mkdir(filename)filename2 pdf\\ if not os.path.exists(filename2):os.mkdir(filename2)url htt…

柚见第十期(后端队伍接口详细设计)

创建队伍 用户可以 创建 一个队伍,设置队伍的人数、队伍名称(标题)、描述、超时时间 P0 队长、剩余的人数 聊天? 公开 或 private 或加密 信息流中不展示已过期的队伍 请求参数是否为空?是否登录,未登录不…

DockerCompose的介绍、安装与常用命令

Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具,通过一个docker-compose.yml配置文件来管理多个容器服务及其依赖关系 一 安装DockerCompose 1、下载 网盘下载 wget https://github.com/docker/compose/releases/download/v2.18.0/docker-comp…

事业单位计算机专业知识 考试范围

《专业知识》考试范围 目录 一、计算机类 (一)计算机科学技术基础 1、计算机基础知识 2、多媒体技术 3、计算机信息安全技术 4、Internet知识 (二)计算机软件及使用 1、Windows2000/xp操作系统 2、文字处理软件Word20…

FX110网:在CP Markets申请出金四个多月了,没任何消息!

近期,本站收到一中国汇友投诉,称其CP Markets平台已数月无法出金,平台方也没有任何回应。在货币市场闯荡久了的“老鸟”就会知道,平台无故不给出金必定有妖,更何况还是长达数月! 在CP Markets申请出金四个多…

Anaconda下载安装及配置pytorch环境

先解释一下Python、Anaconda、Pytorch是啥 Python是一种广泛使用的编程语言,在许多领域都有应用。它具有简洁的语法,易于学习,并且有大量的第三方库可以使用。 Anaconda是一个Python的包和环境管理软件,提供了许多用于数据科学&a…

如何像专家一样维护服务器硬件?

大家好!今天,我们要一起来探索一个神秘的世界——服务器硬件。可能你会有点困惑,服务器硬件是什么?别急,让我一一为你解答。 1. 服务器硬件是什么? 想象一下,如果你的家里有一个巨大的衣柜&am…

Flink SQL示例

1. 简单订单统计 假设有以下两个订单流数据,数据字段分别为用户ID、购买的商品名称、商品数量。 数据流A: 1L,"尺子",3 1L,"铅笔",4 3L,"橡皮",2 数据流B: 2L,"手表",3 2L,"笔记本",3 4…

51、WEB攻防——通用漏洞验证码识别复用调用找回密码重定向状态值

文章目录 回显状态判断用户名重定向验证码回显显示验证码简单机制验证码复用验证码智能识别验证码接口调用安全修复建议 回显状态判断 request前端判断不安全(前端接收验证的返回值来进行判断),使用burp的Response to this request可以抓取返回包~ 这种…

【JS】APIs:事件流、事件委托、其他事件、页面尺寸、日期对象与节点操作

1 事件流 捕获阶段&#xff1a;从父到子 冒泡阶段&#xff1a;从子到父 1.1 事件捕获 <body> <div class"fa"><div class"son"></div> </div> <script>const fadocument.querySelector(.fa);const sondocument.qu…

机器视觉学习(一)—— 认识OpenCV、安装OpenCV

目录 一、认识OpenCV 二、通过pip工具安装OpenCV 三、PyCharm安装OpenCV 一、认识OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff0c;开源计算机视觉库&#xff09;是一个跨平台的计算机视觉库&#xff0c;最初由威尔斯理工学院的Gary Bradski于199…

强烈安利!FastReport 商业图形库,炫酷可视化报告开发首选~

FastReport Business Graphics .NET&#xff0c;是一款基于fastreport报表开发控件的商业图形库&#xff0c;借助 FastReport 商业图形库&#xff0c;您可以可视化不同的分层数据&#xff0c;构建业务图表以进行进一步分析和决策。利用数据呈现领域专家针对 .NET 7、.NET Core、…

NXP iMX8MM Cortex-M4 核心 GPT Capture 测试

By Toradex秦海 1). 简介 NXP i.MX8 系列处理器均为异构多核架构 SoC&#xff0c;除了可以运行 Linux 等复杂操作系统的 Cortax-A 核心&#xff0c;还包含了可以运行实时操作系统比如 FreeRTOS 的 Cortex-M 核心&#xff0c;本文就演示通过 NXP i.MX8MM 处理器集成的 Cortex-…

Node.Js编码注意事项

Node.js 中不能使用 BOM 和 DOM 的 API&#xff0c;可以使用 console 和定时器 APINode.js 中的顶级对象为 global&#xff0c;也可以用 globalThis 访问顶级对象 浏览器端js的组成 Node.js中的JavaScript组成 相比较之下发现只有console与定时器是两个API所共有的&#xff…

HarmonyOS系统开发基础环境搭建

目录 一 鸿蒙介绍&#xff1a; 1.1 HarmonyOS系统 1.2 HarmonyOS软件编程语言 二 HarmonyOS编程环境搭建 1.1 官网下载地址 1.2搭建开发流程 1.3 创建安装目录 1.4 下载DevEco Studio​编辑 1.5 下载后点击安装 1.6 自动添加桌面快捷和bin路径 ​编辑1.7 安装好运行 …

二,几何相交---4,BO算法---(1)接近性和可分离性

提了三个观点 1&#xff0c;如果一条直线&#xff08;比如竖直&#xff09;可以分开两个线段&#xff0c;则这两个线段不相交 2&#xff0c;只需要观察与隔离线相交的几个线段 3&#xff0c;从左向右扫描线只需要观察每个线段的两个端点和一些可能的相交点。