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

二叉树算法之【Z字型层序遍历】

目录

LeetCode-103题


LeetCode-103题

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

class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList<>();// checkif (root == null)return result;// 借助队列来实现Queue<TreeNode> queue = new LinkedList<>();// 先将根节点放到队列中queue.offer(root);// 用于记录当前层的节点数量int c1 = 1;// 用于标识添加方向int flag = 1;// 只要队列不为空while (!queue.isEmpty()) {// 用于记录下一层节点数量int c2 = 0;LinkedList<Integer> inner = new LinkedList<>();for (int i = 0; i < c1; i++) {TreeNode curr = queue.poll();// 根据标识判断addLast还是addFirstif (flag % 2 == 1) {inner.addLast(curr.val);} else {inner.addFirst(curr.val);}// 有左子节点if (curr.left != null) {// 将左子节点添加到队列中queue.offer(curr.left);// 记录下一层节点数量标识+1c2++;}// 有右子节点if (curr.right != null) {// 将右子节点添加到队列中queue.offer(curr.right);// 记录下一层节点数量标识+1c2++;}}// 下一轮遍历通过c1就知道当前层有多少个节点了c1 = c2;// 下一层换个方向,以达到Z字形flag++;result.add(inner);}return result;}
}

http://www.lryc.cn/news/608360.html

相关文章:

  • ctfshow_源码压缩包泄露
  • AIGC系列:本地部署大模型
  • Rust进阶-part2-泛型
  • Flutter基础知识
  • 在线问诊系统源码解析:图文+视频双模式架构开发全攻略
  • CH32V单片机启用 FPU 速度测试
  • 江协科技STM32 13-1 PWR电源控制
  • 从零打造大语言模型--处理文本数据
  • FFmpeg+javacpp中纯音频播放
  • 互联网医院系统,互联网医院好处有哪些?
  • 音视频学习(四十八):PCM和WAV
  • CatBoost 完整解析:类别特征友好的梯度提升框架
  • 基于单片机智能雨刷器/汽车刮水器设计
  • zset 中特殊的操作
  • nodejs读写文件
  • 【redis】基于工业界技术分享的内容总结
  • C++ 模板初阶
  • 阿里云:Ubuntu系统部署宝塔
  • 回归预测 | Matlab实现CNN-LSTM-self-Attention多变量回归预测
  • ventoy 是一个非常棒的开源工具,可以制作多系统的usb启动盘
  • 基于落霞归雁思维框架的软件需求管理实践指南
  • Vulnhub ELECTRICAL靶机复现(附提权)
  • 计算机技术与软件专业技术资格(水平)考试简介
  • Dispersive Loss:为生成模型引入表示学习 | 如何分析kaiming新提出的dispersive loss,对扩散模型和aigc会带来什么影响?
  • 《React+TypeScript实战:前端状态管理的安全架构与性能优化深解》
  • 【Unity3D实例-功能-移动】小兵移动-通过鼠标点击进行
  • 咨询进阶——解读57页企业发展战略咨询常用工具【附全文阅读】
  • Java Optional 类教程详解
  • C++ vector底层实现与迭代器失效问题
  • 【智能体cooragent】新智能体创建相关代码解析