代码随想录算法训练营第十五天|102.二叉树的层序遍历、226.翻转二叉树

102.二叉树的层序遍历

  • 刷题icon-default.png?t=N7T8https://leetcode.cn/problems/binary-tree-level-order-traversal/description/
  • 文章讲解icon-default.png?t=N7T8https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html
  • 视频讲解icon-default.png?t=N7T8https://www.bilibili.com/video/BV1GY4y1u7b2/?vd_source=af4853e80f89e28094a5fe1e220d9062
  • 题解1(迭代法):
/*** 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 List<List<Integer>> resultList = new ArrayList<List<Integer>>();//主函数public List<List<Integer>> levelOrder(TreeNode root) {checkFun(root);return resultList;}//借助队列public void checkFun(TreeNode cur){//若为空,则直接返回if(cur == null){return;}//创建链辅助队列,并加入根结点Queue<TreeNode> que = new LinkedList<TreeNode>();que.offer(cur);//当辅助队列内非空while(!que.isEmpty()){List<Integer> itemList = new ArrayList<Integer>();int len = que.size();while(len > 0){TreeNode tempNode = que.poll();itemList.add(tempNode.val);if(tempNode.left != null){que.offer(tempNode.left);}if(tempNode.right != null){que.offer(tempNode.right);}len--;}resultList.add(itemList);}}
}
  • 题解2(递归法):
/*** 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 List<List<Integer>> resultList = new ArrayList<List<Integer>>();//递归遍历public void checkFun(TreeNode cur, Integer deep){//若传入二叉树为空,则直接返回if(cur == null){return;}//传入二叉树非空,则先遍历深度+1deep++;//当前遍历结果中层数小于当前deep,则进行遍历if(resultList.size() < deep){//层级增加时,list的Item增加,利用list索引值进行层级界定List<Integer> item = new ArrayList<Integer>();resultList.add(item);}//将当前遍历结点加入结果数组resultList.get(deep - 1).add(cur.val);checkFun(cur.left, deep);checkFun(cur.right,deep);}//主函数public List<List<Integer>> levelOrder(TreeNode root) {checkFun(root, 0);return resultList;}
}

226.翻转二叉树

  • 刷题icon-default.png?t=N7T8https://leetcode.cn/problems/invert-binary-tree/description/
  • 文章讲解icon-default.png?t=N7T8https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html
  • 视频讲解icon-default.png?t=N7T8https://www.bilibili.com/video/BV1sP4y1f7q7/?vd_source=af4853e80f89e28094a5fe1e220d9062
  • 题解(后序递归法):
/*** 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);swapChildren(root);return root;}private void swapChildren(TreeNode root){TreeNode temp = root.left;root.left = root.right;root.right = temp;}
}

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

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

相关文章

【前端素材】bootstrap4实现绿色植物Lukani平台

一、需求分析 绿色植物商城是一个专门销售绿色植物的零售商店或在线平台。它提供各种类型和品种的室内植物、室外植物和盆栽等。绿色植物商城的作用可以从以下几个方面来分析&#xff1a; 1. 提供多样化的选择&#xff1a;绿色植物商城通常会提供各种各样的绿色植物选项&…

网络安全产品之认识准入控制系统

文章目录 一、什么是准入控制系统二、准入控制系统的主要功能1. 接入设备的身份认证2. 接入设备的安全性检查 三、准入控制系统的工作原理四、准入控制系统的特点五、准入控制系统的部署方式1. 网关模式2. 控制旁路模式 六、准入控制系统的应用场景七、企业如何利用准入控制系统…

OS X(MACOS) C/C++ 程序链接静态库限制。

在OSX上面C/C程序不被允许完全静态链接&#xff0c;当然无论是 Windows 还是 Linux 上面也没有办法真正做到完全的静态链接。 OSX上面C/C程序静态链接也有一些麻烦跟坑点&#xff0c;我们都知道在OSX上面是使用 brew 工具链来安装程序跟依赖的&#xff0c;它会自动下载目标程序…

分布式系统架构介绍

1、为什么需要分布式架构&#xff1f; 增大系统容量&#xff1a;单台系统的性能瓶颈&#xff0c;多台机器才能应对大规模的应用场景&#xff0c;所以就需要我们的应用支撑平台具备分布式架构。 加强系统的可用&#xff1a;为了满足业务的SLA要求&#xff0c;需要通过分布式架构…

表单标记(html)

前言 发现input的type属性还是有挺多的&#xff0c;这里把一些常用的总结一下。 HTML 输入类型 (w3school.com.cn)https://www.w3school.com.cn/html/html_form_input_types.asp text-文本 文本输入,如果文字太长&#xff0c;超出的部分就不会显示。 定义供文本输入的单行…

Stability AI一种新型随心所欲生成不同音调、口音、语气的文本到语音(TTS)音频模型

该模型无需提前录制人声样本作为参考&#xff0c;仅凭文字描述就能生成所需的声音特征。用户只需描述他们想要的声音特点&#xff0c;例如“一个语速较快、带有英国口音的女声”&#xff0c;模型即可相应地生成符合要求的语音。它不仅能模仿已有的声音&#xff0c;还能根据用户…

(已解决)在vue路由配置中,export const constantRoutes和const routes有什么区别,

在 Vue Router 的配置中&#xff0c;export const constantRoutes 和 const routes 主要是关于变量的作用域和导出方式的不同。 const routes: 只是声明了一个常量 routes&#xff0c;其中可能包含了应用中的路由配置数组。这个常量的作用范围仅限于当前文件&#xff0c;如果不…

Mac使用AccessClient打开Linux堡垒机跳转闪退问题解决

登录公司的服务器需要使用到堡垒机&#xff0c;但是mac使用AccessClient登录会出现问题 最基础的AccessClient配置 AccessClient启动需要设置目录权限&#xff0c;可以直接设置为 权限 777 chmod 777 /Applications/AccessClient.app注: 如果不是这个路径,可以打开终端,将访达中…

OJ刷题:求俩个数组的交集(没学哈希表?快排双指针轻松搞定!)

目录 ​编辑 1.题目描述 2.C语言中的内置排序函数&#xff08;qsort&#xff09; 3.解题思路 3.1 升序 3.2双指针的移动 3.3 保证加入元素的唯一性 4.leetcode上的完整代码 完结散花 悟已往之不谏&#xff0c;知来者犹可追 …

PostgreSQL 与 MySQL 相比,优势何在?

我们将通过一张对比表格详细列出 PostgreSQL 与 MySQL 在不同方面的对比&#xff1a; 对比表格 特性/数据库PostgreSQLMySQL数据类型支持支持JSON/JSONB、数组、区间等高级数据类型基本数据类型支持&#xff0c;JSON支持较普通遵循SQL标准更严格遵循&#xff0c;支持复杂查询…

新增C++max函数的使用

在 C 中&#xff0c;max函数是标准库中的一个函数&#xff0c;用于返回两个或多个元素中的最大值。max函数的声明如下&#xff1a; cpp #include <algorithm>template<class T> const T& max(const T& a, const T& b);这个函数接受两个同类型的参数a…

UML 2.5图形库

UML 2.5图形库 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存储&#…

UnityShader:直接光照效果/点光/平行光阴影

效果&#xff1a; 代码&#xff1a; Shader "MyShader/PhongNormal" {Properties{_DiffuseTex("漫反射贴图",2d)"white"{}_AOTex("AO贴图",2d)"white"{}_SpecularMask("高光遮罩",2d)"white"{}_Normal…

Java多线程是什么?七大线程状态总结

前言 大家好&#xff0c;我是chowley&#xff0c;马上大年三十了&#xff0c;提前祝大家新春快乐&#xff0c;这篇来总结一下Java多线程方面内容。 在Java编程中&#xff0c;多线程是一种重要的特性&#xff0c;它允许程序同时执行多个任务&#xff0c;从而提高程序的性能和效…

大模型实战营第二期——2. 浦语大模型趣味Demo

文章目录 1. 大模型及InternLM模型介绍2. InternLM-Chat-7B智能对话Demo2.1 基本说明2.2 实际操作2.2.1 创建开发机2.2.2 conda环境配置2.2.3 模型下载2.2.4 InternLM代码库下载和修改2.2.5 cli运行2.2.6 web_demo运行 3. Lagent智能体工具调用Demo3.1 基本说明3.2 实际操作3.2…

商业智能(BI)数据分析、挖掘概念

商业智能&#xff08;BI&#xff09;数据分析挖掘概念 一、商业智能&#xff08;BI&#xff09;数据分析挖掘概念 数据挖掘目前在各类企业和机构中蓬勃发展。因此我们制作了一份此领域常见术语总结。 1.分析型客户关系管理&#xff08;Analytical CRM/aCRM 用于支持决策&…

nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法

1、我们知道 nodeJS 是老外搞出来的&#xff0c;服务器放在了国外&#xff0c;国内的小朋友访问起来会比较慢&#xff0c;阿里巴巴的淘宝给出了有力支持&#xff0c;现在我们就将 nodeJS 的镜像地址切换为国内的淘宝镜像。 2、查看当前的镜像地址&#xff1a; npm get registr…

【大厂AI课学习笔记】1.5 AI技术领域(4)CV的六大场景

计算机视觉&#xff0c;是研究如何让计算机象人类一样看的科学。 Computer Vision&#xff0c;我们也称为CV。 它一共有六大场景。 分别是&#xff1a; 图像分类、图像重建、目标检测、图像搜索、图像分割、目标动向监测。 计算机视觉六大场景详解 一、图像分类&#xff…

mysql 数据库基础知识

一、什么是主从复制? 主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff1b;主数据库一般是准实时的业务数据库 简单来说&#xff0c;是使用两个或两个以上相同的数据库&#xff0c;将一个数据库当做主数据库&#xff0c;而…

数据库管理-第147期 最强Oracle监控EMCC深入使用-04(20240207)

数据库管理147期 2024-02-07 数据库管理-第147期 最强Oracle监控EMCC深入使用-04&#xff08;20240207&#xff09;1 发现Exadata2 Exadata监控计算节点&#xff1a;存储节点RoCE交换机管理交换机PDU 总结 数据库管理-第147期 最强Oracle监控EMCC深入使用-04&#xff08;202402…