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

2025年--Lc166--H103.二叉树的锯齿形层序遍历(二叉树的层序遍历)--Java版

1.题目

在这里插入图片描述
在这里插入图片描述

2.思路

res.size():当前已经完成并加入结果的层数。从 0 开始计层,所以

res.size() % 2 == 0 表示正在处理的这一层是偶数层(第 0、2、4…层),方向为从左到右;

否则是奇数层(第 1、3、5…层),方向为从右到左。

tmp 是这一层的临时链表(LinkedList),用它是因为可以头插/尾插:

偶数层:addLast 把节点值放到尾部,自然形成左→右;(倒序)

奇数层:addFirst 把节点值放到头部,等效把本层顺序反过来(右→左)。(顺序)

3.代码实现

/*** 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> que=new LinkedList<TreeNode>();//根节点先入队que.offer(root);while(!que.isEmpty()){LinkedList<Integer> tmp=new LinkedList<>();//局部变量:size是根据当前层的节点个数变化的int size=que.size();for(int i=size;i>0;i--){//从队列中弹出元素TreeNode node=que.poll();// 若为偶数层,将 node.val 添加至 tmp 尾部;否则,添加至 tmp 头部。// 比如9和20,因为是偶数个节点个数,所以 9《-20//结果是(20,9)if(res.size()%2==0)tmp.addLast(node.val);//15和7,所以是15-》7,结果(15,7)elsetmp.addFirst(node.val);//遍历该节点的左右孩子TreeNode left=node.left;TreeNode right=node.right;if(left!=null){//如果左孩子节点不为空,入队que.offer(left);}if(right!=null){que.offer(right);}}//将当前层结果 tmp 转化为 list 并添加入 resres.add(tmp);}//打印结果列表 resreturn res;}
}
http://www.dtcms.com/a/449294.html

相关文章:

  • 做服装的网站淮北市建网站
  • 襄阳网站推广优化技巧宿州市建设工程质量监督站网站
  • 《从踩坑到精通:边缘网关在物联网场景下的实践与优化指南》
  • 光通信|神经网络助力OAM模式快速解调
  • CodeBuddy CLI全攻略:从安装到实战及文档化编程深度思考
  • 两个无重叠子数组的最大和
  • linux网络服务+linux数据库3
  • 206-基于深度学习的胸部CT肺癌诊断项目的设计与实现
  • 二叉树进阶面试题:最小栈 栈的压入·弹出序列 二叉树层序遍历
  • 【大模型LLMs】LangGraph实战:引入网络搜索tool和Memory机制的对话Agent案例
  • 企业网站开发毕业报告网络营销的推广工具
  • 手机网站开发需要哪些人百度广告联盟怎么加入
  • 书生浦语实战营第六期 L1-G3000
  • 前端IM应用开发中的难点解析与总结
  • Web 服务器 UserDir(~username)功能解析:从原理到安全实践
  • 25新三年级上册数学混合运算应用题八大专项+三年级上数学混合运算练习/八大考点(复合问题/倍数问题)+完整电子版可下载打印
  • Linux基础IO(下):文件重定向和缓冲区
  • Flink 高级配置发行版剖析、Scala 版本、Table 依赖与 Hadoop 集成实战
  • 半成品公司 网站专业公司网站建设
  • 【数据结构】二叉搜索树 C++ 简单实现:增删查改全攻略
  • 深度学习(十七):全批量梯度下降 (BGD)、随机梯度下降 (SGD) 和小批量梯度下降 (MBGD)
  • 实验十九 GaussDB三权分立实验
  • C++微基础备战蓝桥杯string篇10.5
  • 基于脚手架微服务的视频点播系统-脚手架开发部分-brpc中间件介绍与使用及二次封装
  • 网站建设需求登记表 免费下载软件开发公司企业简介
  • 北京城乡建设网站网站建设都是用什么软件
  • C++分布式语音识别服务实践
  • 轻松理解智能体设计模式(1/6):提示链(Prompt Chaining)
  • ARM TrustZone技术如何守护你的隐私
  • 北京恒伟网站建设wordpress 新页面打开空白