【LeetCode: 103. 二叉树的锯齿形层序遍历 + BFS】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ BFS
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 103. 二叉树的锯齿形层序遍历

⛲ 题目描述

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

示例 1:
在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[20,9],[15,7]]
示例 2:

输入:root = [1]
输出:[[1]]
示例 3:

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

提示:

树中节点数目在范围 [0, 2000] 内
-100 <= Node.val <= 100

🌟 求解思路&实现代码&运行结果


⚡ BFS

🥦 求解思路
  1. 该题目还是通过BFS来直接遍历二叉树即可,该题的改变之处在于,即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行,通过记录一个变量来记录当前层的遍历顺序即可,最后要记得更新变量结果。
  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>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList<>();if (root == null)return res;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);boolean flag = true;while (!queue.isEmpty()) {int size = queue.size();List<Integer> list = new ArrayList<>();for (int i = 0; i < size; i++) {TreeNode temp = queue.poll();list.add(temp.val);if (temp.left != null)queue.add(temp.left);if (temp.right != null)queue.add(temp.right);}if (!flag) {Collections.reverse(list);}flag = !flag;res.add(list);}return res;}
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

定时器0中断实验

实现现象&#xff1a;下载程序后&#xff0c;D11小灯循环点亮1秒&#xff0c;熄灭1秒。使用单片机内部定时器可以实现准确延时。 注意事项&#xff1a;无。 程序代码&#xff1a; #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器typedef unsign…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第三天-ARM Linux ADC和触摸屏开发 (物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 教学内容&#xff1a; 1、ADC S3C2440的A/D转换器包含一个8通道的模拟输入转换器&#xff0c;可以将模拟输入信号转换成10位数字编码。 在A/D转换时钟频率为2.5MHz时&…

用结构体数组,完成宠物信息登记管理。

管理宠物的名字&#xff0c;品种&#xff0c;年龄。 实现功能如下: 1.插入宠物信息 2.遍历宠物信息 #include <stdio.h> #define N 100 typedef struct chongwu { char name[20]; char pingz[10]; int age; }cw; void intset_cw(cw *ptr,int *pnum) { printf("请…

第三十回 张都监血溅鸳鸯楼 武行者夜走蜈蚣岭-python可接受任意数量参数的函数

武松回到孟州城&#xff0c;来到张都监后花园墙外&#xff0c;这是一个马院&#xff0c;问清楚后槽张团练他们三人还在鸳鸯楼吃酒&#xff0c;直接一刀杀了。武松从后门这里爬过墙&#xff0c;来到了厨房&#xff0c;将两个还在服侍的丫环杀了。 武松认得路&#xff0c;蹑手蹑…

揭秘分账系统的神奇力量,快速实现财务高效分配!

当今电商企业面对的财务管理挑战日益复杂&#xff0c;需要精确、高效的财务分配方案来应对。而分账系统正是应运而生的一项神奇科技&#xff0c;它以其优秀的性能和功能&#xff0c;迅速成为电商、连锁企业、集市、农贸市场等财务管理的不可或缺的利器。 一、财务高效分配的重要…

Java Web 中forward 和 redirect 的区别

前言 在Java Web开发中&#xff0c;页面跳转是构建用户界面和实现业务逻辑的重要组成部分。Forward&#xff08;转发&#xff09;和Redirect&#xff08;重定向&#xff09;是两种常见的跳转方式&#xff0c;它们分别具有不同的特点和适用场景。正确地选择和使用这两种跳转方式…

LeetCode 250. Count Univalue (二叉树后序遍历好题)

LeetCode 250. Count Univalue Given a binary tree, count the number of uni-value subtrees. A Uni-value subtree means all nodes of the subtree have the same value. Example : Input: root [5,1,5,5,5,null,5] 5 / 1 5 / \ 5 5 5 Output: 4 解法1&#xff1a;…

Rust中的模块路径和pub关键字详解

Rust是一门注重安全性和性能的系统编程语言&#xff0c;其模块系统提供了一种有力的组织代码的方式。在本文中&#xff0c;我们将介绍Rust中的模块路径&#xff08;Path&#xff09;和pub关键字的用法。 模块结构 首先&#xff0c;让我们看一下一个简单的Rust模块示例&#x…

4 scala集合-Map

和 Java 一样&#xff0c;Scala 也有表示键值对&#xff08;Key-Value&#xff09;集合的 Map 数据结构。同样&#xff0c;Map 也分不可变和可变&#xff0c;不可变需要使用类 scala.collection.mutable.Map。 1 不可变 Map 可以使用以下语法定义不可变 Map 对象 val/var ma…

高性能MySQL 阅读笔记

mysql由服务器端与存储引擎两部分组成&#xff0c;存储引擎部分的锁机制对服务器端是透明的。服务器端内置缓存机制&#xff0c;有解析器和优化器机制。不同的存储引擎对事务、并发等都用不同的处理。 ACID代表的特性&#xff1a;原子性、一致性、隔离性、持久性 共享锁与排他…

ChatGPT重大升级:能自动记住用户的习惯和喜好,用户有权决定是否共享数据给OpenAI

OpenAI刚刚宣布了ChatGPT的一项激动人心的更新&#xff01; OpenAI在ChatGPT中新加了记忆功能和用户控制选项&#xff0c;这意味着GPT能够在与用户的互动中记住之前的对话内容&#xff0c;并利用这些信息在后续的交谈中提供更加相关和定制化的回答。 这一功能目前正处于测试阶…

【机器学习笔记】5 机器学习实践

数据集划分 子集划分 训练集&#xff08;Training Set&#xff09;&#xff1a;帮助我们训练模型&#xff0c;简单的说就是通过训练集的数据让我们确定拟合曲线的参数。 验证集&#xff08;Validation Set&#xff09;&#xff1a;也叫做开发集&#xff08; Dev Set &#xf…

XMall 开源商城 SQL注入漏洞复现(CVE-2024-24112)

0x01 产品简介 XMall 开源电商商城 是开发者Exrick的一款基于SOA架构的分布式电商购物商城 前后端分离 前台商城:Vue全家桶 后台管理:Dubbo/SSM/Elasticsearch/Redis/MySQL/ActiveMQ/Shiro/Zookeeper等。 0x02 漏洞概述 XMall 开源商城 /item/list、/item/listSearch、/sys/…

【天幕系列 03】深度学习领域的最新前沿:2024年的关键突破与趋势

文章目录 导言01 深度学习的基本原理和算法1.1 神经网络&#xff08;Neural Networks&#xff09;1.2 前馈神经网络&#xff08;Feedforward Neural Network&#xff09;1.3 反向传播算法&#xff08;Backpropagation&#xff09;1.4 激活函数&#xff08;Activation Function&…

Linux第56步_根文件系统第3步_将busybox构建的根文件系统烧录到EMMC

1、第1次将“rootfs”打包 1)、打开第1个终端&#xff0c;准备在“mnt”目录下创建挂载目录“rootfs”&#xff1b; 输入“ls回车” 输入“cd /mnt回车” 输入“ls回车”&#xff0c;查看“mnt”目录下的文件和文件夹 输入“sudo mkdir rootfs回车”&#xff0c;在“mnt”…

STM32CubeMX的下载和安装固件库详细步骤

年也过了&#xff0c;节也过了&#xff0c;接下来又要进入紧张的学习中来了。过完年后发现一个问题&#xff0c;就是我之前吃的降压药不太管用&#xff0c;每天的血压只降到了91/140左右&#xff0c;没有到安全范围内&#xff0c;从初三开始换了一种降压药&#xff0c;效果出奇…

14. 推荐系统之矩阵分解

本文为 「茶桁的 AI 秘籍 - BI 篇 第 14 篇」 文章目录 矩阵分解 ALS常用推荐算法什么是矩阵分解矩阵分解的目标函数 Hi&#xff0c;你好。我是茶桁。 新年过后&#xff0c;咱们要开始学一些新内容了。从今天开始&#xff0c;要给大家去讲解的是关于推荐系统的内容。推荐系统的…

【c/c++】获取时间

在一些应用的编写中我们有时候需要用到时间&#xff0c;或者需要一个“锚点”来确定一些数的值。在c/c中有两个用来确定时间的函数&#xff1a;time/gettimeofday 一、time time_t time(time_t *timer);time 函数返回当前时间的时间戳&#xff08;自 1970 年 1 月 1 日以来经…

HDD硬盘简介与分类

硬盘驱动器&#xff08;HDD&#xff0c;Hard Disk Drive&#xff09;是一种采用磁存储技术进行数据存储的传统非易失性存储设备。其基本架构由以下几个核心组件构成&#xff1a; 盘片&#xff08;Platters&#xff09;&#xff1a; 硬盘内部包含多个高速旋转的圆形金属或玻璃盘…

代码随想录训练营第五十二天打卡|198.打家劫舍 213.打家劫舍II 337.打家劫舍III

198.打家劫舍 1.dp经典入门题目&#xff0c;dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。dp[i]的值不一定是偷了下标为i的那一家&#xff0c;只是这一家能偷&#xff0c;如果不偷这一家能带来更高的收益&#…