当前位置: 首页 > news >正文

【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;}
}
🥦 运行结果

在这里插入图片描述


💬 共勉

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

在这里插入图片描述

在这里插入图片描述

相关文章:

  • GPT-4带来的思想火花
  • 开发实体类
  • 28. 找出字符串中第一个匹配项的下标
  • 模型 IPO(输入、处理、输出)学习模型
  • 网络协议与攻击模拟_17HTTPS 协议
  • CTFshow web(文件上传158-161)
  • EXTI外部中断
  • 面试经典150题——螺旋矩阵
  • 下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO
  • C语言第二十六弹---字符串函数(下)
  • Springboot-接入WebSocket服务
  • 链式结构实现队列
  • 优秀的电机驱动MCU:MM32SPIN360C
  • react+ts【项目实战一】配置项目/路由/redux
  • C++类和对象-C++运算符重载->加号运算符重载、左移运算符重载、递增运算符重载、赋值运算符重载、关系运算符重载、函数调用运算符重载
  • 网络传输文件的问题
  • [译]如何构建服务器端web组件,为何要构建?
  • ES6之路之模块详解
  • laravel 用artisan创建自己的模板
  • mysql 数据库四种事务隔离级别
  • React 快速上手 - 07 前端路由 react-router
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 初识MongoDB分片
  • 离散点最小(凸)包围边界查找
  • 前言-如何学习区块链
  • 如何学习JavaEE,项目又该如何做?
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 问题之ssh中Host key verification failed的解决
  • 我的面试准备过程--容器(更新中)
  • 小程序01:wepy框架整合iview webapp UI
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 云大使推广中的常见热门问题
  • 容器镜像
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # Apache SeaTunnel 究竟是什么?
  • #NOIP 2014#Day.2 T3 解方程
  • #pragma pack(1)
  • (python)数据结构---字典
  • (八十八)VFL语言初步 - 实现布局
  • (笔试题)合法字符串
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (译) 函数式 JS #1:简介
  • (原創) 未来三学期想要修的课 (日記)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)shell中括号的特殊用法 linux if多条件判断
  • 、写入Shellcode到注册表上线
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net wcf memory gates checking failed
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • @RestController注解的使用
  • [Android Studio] 开发Java 程序