力扣刷题Days13--翻转二叉树(js)

目录

1,题目

2,代码

2.1递归思想-深度优先遍历

2.2迭代-广度优先遍历

3,学习与总结


1,题目

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

2,代码

2.1递归思想-深度优先遍历

我们从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
//  迭代思想
var invertTree = function(root) {
    if(root === null){
        return root;
    }

    const left = invertTree(root.left);
    const right = invertTree(root.right);

    root.right = left;
    root.left = right;

    return root;
};

2.2迭代-广度优先遍历

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
//  迭代思想
var invertTree = function(root) {
    if(root === null){
        return root;
    }

    let queue = [];
    queue.push(root);

    while(queue.length > 0){
       const node = queue.shift();

    //节点中的左右孩子进行交换
       const tempTree = node.left;
       node.left = node.right;
       node.right = tempTree;
    // 当节点的左子树不为空 将该节点入队列
       if(node.left != null){
           queue.push(node.left);
       }

       if(node.right != null){
           queue.push(node.right)
       }

    }

    return root;
};

3,学习与总结

多练习  多做题!


勉励自己:贵在坚持!

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

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

相关文章

AI 应用之路:质疑汤姆猫,成为汤姆猫,超越汤姆猫

过去一年,我对 AI 应用的看法经历了这样一个过程:质疑汤姆猫,理解汤姆猫,成为汤姆猫,超越汤姆猫。 什么是汤姆猫?汤姆猫是 2010 年移动互联网早期的一款应用,迅速走红,又淡出视野。…

C++ · 代码笔记5 · 探索多态与虚函数

目录 前言011虚函数_使用基类指针实现覆盖特性012虚函数_使用引用实现覆盖特性013使用多态场景小例程020构成多态的条件030虚析构函数040纯虚函数051typeinfo运算符_获取类型信息052typeinfo_根据不同类型进行不同操作 前言 本笔记所涉及到的编程环境与 《C 代码笔记1 从C到C…

7款前端实战型项目特效分享(附在线预览)

分享7款实用性的前端动画特效 其中有canvas特效、css动画、svg动画等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 CSS春节灯笼特效 基于CSS实现的灯笼特效 灯笼会朝左右两个方向来回的摆动着 以下效果图只能体现…

knife4j生产环境禁止打开页面

Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案,官网地址:Knife4j 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j 考虑到安全性问题,在实际服务部署到生产环境后就需要禁用到swagger页面的展示,这个时候只需…

Jmeter查看结果树之查看响应的13种详解方法

Jmeter查看结果树查看响应有哪几种方法,可通过左侧面板底部的下拉框选择: 01 Text 查看结果树中请求的默认格式为Text,显示取样器结果、请求、响应数据3个部分内容。 取样器结果: 默认Raw展示,可以切换为Parsed视图&#xff0c…

Selenium常见元素操作,学完就能上手

web端自动化测试在回归测试、兼容测试扮演着举足轻重的角色,作为web自动化测试工程师,日常工作主要的部分就是编写自动化测试用例代码,借助的开源框架来说,目前市场占有率较高的仍然是selenium。 如何使用selenium完成web页面元素…

算法---双指针练习-5(有效三角形的个数)

有效三角形的个数 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:有效三角形的个数 2. 讲解算法原理 算法的基本思想是首先对数组进行排序,然后使用三个指针left、right和cur,分别表示三个元素的索引。其中,left指…

PCIE UVM SVT

PCIE中存在UI概念,unit interval 定义为每个bit 传输需要的时间。 Introduction VC UVM VIP for PCIE 是一个兼容UVM验证方法学的高级验证组合以及数据类型的套件。 VC UVM VIP是基于uvm_agen 的架构图如下所示: svt_pcie_device_agent:它包含Driver,Target,Requeseter,I…

CDR(CorelDRAW)2024最新汉化注册补丁包下载

CorelDRAW 2024是一款功能强大的平面设计软件,广泛应用于图形设计、编辑照片以及创建网站等领域。凭借对高级操作系统的支持、多监视器查看和4K显示屏的兼容性,它让初始用户、图形专家、小型企业主和设计爱好者都能自信快速地交付专业级结果。 CorelDRA…

解决方案|珈和科技推出农业特色产业数字化服务平台

今年中央一号文件提出,鼓励各地因地制宜大力发展特色产业,支持打造乡土特色品牌。 然而,农业特色产业的生产、加工和销售仍然面临诸多挑战。产品优质不能优价,优质不能优用的现象屡见不鲜,产业化程度低、生产附加值不…

套接字编程 --- 一

目录 1. 预备知识 1.1. 端口号 1.2. 认识TCP协议 1.3. 认识UDP协议 1.4. 网络字节序 2. socket 2.1. socket 常见系统调用 2.1.1. socket 系统调用 2.1.2. bind 系统调用 2.1.3. recvfrom 系统调用 2.1.4. sendto系统调用 2.3. 其他相关接口 2.3.1. bzero 2.3.2…

智慧公厕的三大特点:信息化、数字化、智慧化

智慧公厕是以物联网、互联网、大数据、云计算等先进技术为支撑,对公共厕所的使用、运营、管理、养护进行全方位高效应用的创新型公厕。它具有三大显著特点:(ZonTree中期)信息化、数字化和智慧化。本文以智慧公厕源头实力厂家广州中…

【鸿蒙 HarmonyOS 4.0】常用组件:List/Grid/Tabs

一、背景 列表页面:List组件和Grid组件; 页签切换:Tabs组件; 二、列表页面 在我们常用的手机应用中,经常会见到一些数据列表,如设置页面、通讯录、商品列表等。下图中两个页面都包含列表,“…

【PCIe 链路训练】之均衡(equalization)

1、概述 这篇文章简单介绍一下PCIE phy的均衡原理和过程,USB phy,ethernet phy这些高速的串行serdes也有相同或者相似的结构。可以不用太关注其中的细节,等到debug的时候可以查询协议,但是需要了解这个故事讲的大概内容。整个equalization过程是controller和phy一起配合完成…

什么是智慧公厕?智慧公厕设备有哪些

在现代社会,公共厕所作为城市基础设施的重要一环,承载着城市卫生、居民生活品质的重要责任。然而,传统公厕存在的问题仍然不可忽视:脏乱差、资源浪费、安全隐患等等。 为了解决这些问题,针对公共厕所日常使用、运营管…

go语言-k8s宿主信息采集运维脚本

背景 由于工作需要,需要采集k8s集群中的宿主相关信息,包括cpu,memory,lvm,标签等信息。通常作为SRE会主选shell或python脚本来实现。但最近我们团队主流开发语言已经切换到golang.所以本次尝试用go语言来写写运维脚本。 实现流程图 代码实现 package m…

[笔记]Crash Course Computer Science

二进制 byte 在电脑中的单位换算: kilobyte 千字节 megabyte 兆字节 gigabyte 千兆字节 1kb210bit 1024byte 1000b 1Mb 220bit 1024kb 1Gb 230bit 1TB1000GB 1GB十亿字节1000MB10^6KB Gb 和 GB 一般而言GB用于文件,Gb用于通信。B代表Byte&…

类与对象(三)--static成员、友元

文章目录 1.static成员1.1概念🎧面试题✒️1.2static的特性🎧1.3思考🎧 2.友元2.1什么是友元?🎧2.2两种友元关系:🎧 1.static成员 1.1概念🎧 🔎 static关键字用于声明类…

SpringCloudAlibaba微服务之Nacos架构及基础概念梳理

SpringCloudAlibaba微服务之Nacos架构及基础概念梳理 文章目录 SpringCloudAlibaba微服务之Nacos架构及基础概念梳理1. 官网介绍1. 简介2. Naocs是什么3. Nacos 地图4. Nacos 生态图 2. Nacos 架构1. 基本架构及概念1. 服务 (Service)2. 服务注册中心 (Service Registry)3. 服务…

第四届信息通信与软件工程国际会议(ICICSE 2024)即将召开!

2024年第四届信息通信与软件工程国际会议(ICICSE 2024)将于2024年5月10-12日在中国北京举办。本次会议由北京工业大学、IEEE以及Comsoc 联合主办。随着当今社会信息化的高速发展,电子信息技术的应用更是随处可见。其中,信息通信与…