LCR144翻转二叉树(力扣简单题,Java,递归+非递归)

目录

题目描述:

递归代码1:

递归代码2:

非递归代码(层次遍历):


题目描述:

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

        示例 1:

输入:root = [5,7,9,8,3,2,4]
输出:[5,9,7,4,2,3,8]

递归代码1:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        if(root==null){
            return null;
        }
        TreeNode result=new TreeNode(root.val);
        getResult(root,result);
        return result;
    }
    public void getResult(TreeNode root,TreeNode copyRoot){
        if(root.right!=null){
            TreeNode node=new TreeNode(root.right.val);
            copyRoot.left=node;
            getResult(root.right,copyRoot.left);
        }
        if(root.left!=null){
            TreeNode node=new TreeNode(root.left.val);
            copyRoot.right=node;
            getResult(root.left,copyRoot.right);
        }
    }
}

递归代码2:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        fn(root);
        return root;
    }
    public void fn(TreeNode root){
        if(root==null){
            return ;
        }
        TreeNode t=root.left;
        root.left=root.right;
        root.right=t;

        fn(root.left);
        fn(root.right);
    }
}

非递归代码(层次遍历):

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        if(root==null){
            return null;
        }
        Queue<TreeNode> queue=new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            int size=queue.size();
            for(int i=0;i<size;i++){
                TreeNode node=queue.remove();
                TreeNode t=node.right;
                node.right=node.left;
                node.left=t;
                if(node.right!=null){
                    queue.add(node.right);
                }
                if(node.left!=null){
                    queue.add(node.left);
                }
            }
        }
        return root;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vs2022安装番茄助手后无法使用

1.安装番茄助手 兼容性-win7-管理员启动 2.破解 下载附件“VA_X64.dll”、“PiaoYun64.dll”破解文件&#xff0c;使用Everything找到C盘对应的“VA_X64.dll”路径&#xff0c;将两个破解文件拷贝到此路径。 3.命令行键入类似命令&#xff1a;D:\OfficeSoftware\VisualStudi…

mybatis实现动态sql和关联映射以及延迟加载策略

一、动态sql的简述 什么是动态sql:在不同条件下拼接不同的sql Mybatis框架的动态sql技术是一种根据特定条件动态拼接SQl语句的功能&#xff0c;他存在的意义是为了解决拼接SQL语句字符串时的痛点问题。比如我们在用淘宝之类的软件在进行商品属性选择的时候&#xff0c;我们会发…

JAVA22 FFM实战之HelloWorld

前言 JDK22即将发布&#xff0c;Java Foreign Function & Memory API将会退出预览&#xff0c;是时候开始学习一波了。 FFM API介绍 FFM API由两大部分组成&#xff0c;一个是Foreign Function Interface&#xff0c;另一个是Memory API。前者是外部函数接口&#xff0c…

Java双非大二找实习记录

先说结论&#xff1a;2.22→3.6线上线下面了七家&#xff0c;最后oc两家小公司&#xff0c;接了其中一个。 本人bg&#xff1a; 真名不经传双非一本&#xff0c;无绩点无竞赛无奖项无实习&#xff0c;23年12月开始学java。若非要说一点相关的经历&#xff0c;就是有java基础&…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:PluginComponent)

提供外部应用组件嵌入式显示功能&#xff0c;即外部应用提供的UI可在本应用内显示。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。本组件为系统接口。 子组件 无 接口 PluginComponent(value:…

数据预处理|数据清洗|使用Pandas进行异常值清洗

数据预处理|数据清洗|使用Pandas进行异常值清洗 使用Pandas进行异常值清洗1. 异常值检测1.1 简单统计分析1.2 散点图方法1.3 3σ原则1.4 箱线图 2. 异常值处理2.1 直接删除2.2 视为缺失值2.3 平均值修正2.4 盖帽法2.5 分箱平滑法2.6 回归插补2.7 多重插补2.8 不处理 使用Pandas…

《Ubuntu20.04环境下的ROS进阶学习5》

一、Hector_Mapping构建二维地图 在前面我们已经介绍了如何使用激光雷达来扫描地图&#xff0c;如何用激光雷达来建造地图&#xff0c;本节我们将两者结合起来&#xff0c;通过Hector_Mapping功能包实现SLAM。 二、在仿真环境中进行2D SLAM 1、下载Hector_Mapping sudo apt i…

软考高级:数据库、数据仓库和数据湖概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

丈夫竞被妻子打的不敢回家

妻子对丈夫大打出手&#xff0c;公主岭法院发出首份男性人身安全保护令 近日&#xff0c;公主岭市人民法院公主岭人民法庭作出了一项具有历史意义的裁定&#xff0c;首次为一位男性受害者发出了人身安全保护令。 据悉&#xff0c;受害者张某与妻子李某结婚多年&#xff0c;但婚…

组合逻辑电路(四)

目录 采用MSI的组合逻辑电路的分析与设计 采用MSI的组合逻辑电路的设计 用具有n个地址输入端的中规模集成器件实现n变量逻辑函数 用译码器设计组合逻辑电路 例 用数据选择器设计组合逻辑电路 例 用具有n个地址输入端的数据选择器实现m变量逻辑函数&#xff08;m>n&#…

工具类实现导出复杂excel、word

1、加入准备的工具类 package com.ly.cloud.utils.exportUtil;import java.util.Map;public interface TemplateRenderer {Writable render(Map<String, Object> dataSource) throws Throwable;}package com.ly.cloud.utils.exportUtil;import java.util.Map;public int…

LabVIEW多表位数字温湿度计图像识别系统

LabVIEW多表位数字温湿度计图像识别系统 解决数字温湿度计校准过程中存在的大量需求和长时间校准问题&#xff0c;通过LabVIEW开发平台设计了一套适用于20多个表位的数字温度计图像识别系统。该系统能够通过图像采集、提取和处理&#xff0c;进行字符训练&#xff0c;从而实现…

树形结构 一篇文章梳理

树形结构是一种非常重要的非线性数据结构&#xff0c;它模拟了具有层次关系的数据模型。在树形结构中&#xff0c; 目录 一、组成元素&#xff1a; 二、树的属性&#xff1a; 深度或高度 度 路径 路径长度 三、树的类型 1 二叉树 2 多叉树 3 完全二叉树 4 满二叉树…

五十三佛_记录

个人笔记&#xff0c;斟酌阅读 《佛说观药王药上二菩萨经》云&#xff1a;若有善男子善女人及馀一切众生。得闻是五十三佛名者。是人於百千万亿阿僧祇劫不堕恶道。   若复有人能称是五十三佛名者。生生之处常得值遇十方诸佛。   若复有人能至心敬礼五十三佛者。除灭四重五…

C---流

最大流 最大流即为最大可行流&#xff0c;最大流的流量是所有可行流中最大的。 实现最大流算法&#xff0c;通常可以使用Ford-Fulkerson算法或它的改进版本Edmonds-Karp算法。这些算法基于图论中的网络流理论&#xff0c;用于在带权有向图中找到从一个顶点到另一个顶点的最大…

html5播放flv视频

参考&#xff1a;flv-h265 - npmHTML5 FLV Player. Latest version: 1.7.0, last published: 6 months ago. Start using flv-h265 in your project by running npm i flv-h265. There are no other projects in the npm registry using flv-h265.https://www.npmjs.com/packag…

基于springboot+mybatis调用MySQL存储过程

前言&#xff1a; 很多公司一般不使用JAVA写存储过程&#xff0c;因为写法较为复杂&#xff0c;不方便后期维护。 不排除一些公司项目会使用。 如果索引优化已经达到很好的性能&#xff0c;不建议使用。以下示例供学习参考&#xff1a; demo源码&#xff1a;https://gitee.com…

JDBC 笔记

课程地址 JDBC Java Database Contectivity 同一套 java 代码操作不同的关系型数据库 入门程序 创建工程&#xff0c;导入 jar 包。工程目录结构&#xff1a; public class JDBCDemo {public static void main(String[] args) throws Exception {// 注册驱动Class.forName(…

新品牌推广怎么做?百度百科创建是第一站

创业企业的宣传推广怎么做&#xff1f;对于初创的企业、或者品牌来说&#xff0c;推广方式都有一个循序渐进的过程&#xff0c;但多数领导者都会做出同一选择&#xff0c;第一步就是给自己的企业创建一个百度百科词条。在百度百科建立自己的企业、或产品词条,不仅可以树立相关信…

Windows11去掉 右键菜单的 AMD Software:Adrenalin Edition 选项

Windows11去掉 右键菜单的 AMD Software:Adrenalin Edition 选项 运行regedit打开注册表编辑器 先定位到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\Package 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\Package找到 AdvancedMicroDevicesInc-2.…