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

【LeetCode102.二叉树的层序遍历】vs.【LeetCode103.二叉树的锯齿形层序遍历】

题目链接

  • LeetCode102.二叉树的层序遍历:102. 二叉树的层序遍历 - 力扣(LeetCode)
  • LeetCode103.二叉树的锯齿形层序遍历:103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)

实现思路

  1. 定义一个队列,每一轮循环,队列都会放入新的一层的节点;
  2. 在下一次循环中,取出上一层放入的所有新节点(放入数组中),并依次从队列中踢出这些节点,获取到这些节点的左右孩子,再放入队列中。如此,就达到了1中所说的每一轮循环,最终队列放入的都是新遍历的层次的所有节点(从左到右)。
  3. 锯齿形:用一个遍历来标记奇/偶数层,奇数层时数组顺序存放在结果中,反之,逆序。

代码实现

  • LeetCode102.二叉树的层序遍历
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> ans;if (root == nullptr) return ans;queue<TreeNode*> q;q.push(root);while (int s = q.size()) {vector<int> res;for (int i = 0; i < s; i++) {TreeNode* top = q.front();res.push_back(top->val);q.pop();if (top->left) q.push(top->left);if (top->right) q.push(top->right);}ans.push_back(res);}return ans;}
};
  • LeetCode103.二叉树的锯齿形层序遍历
class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {vector<vector<int>> res;if (root == nullptr) return res;queue<TreeNode*> q;q.push(root);bool flag = 0;while (int s = q.size()) {vector<int> ans;TreeNode* cur;for (int i = 0; i < s; i++) {cur = q.front();ans.push_back(cur->val);if (cur->left) q.push(cur->left);if (cur->right) q.push(cur->right);q.pop();}if (flag) reverse(ans.begin(), ans.end());res.push_back(ans);flag = !flag;}return res;}
};

http://www.dtcms.com/a/267537.html

相关文章:

  • Apollo自动驾驶系统中Planning模块的架构设计与核心逻辑解析(流程伪代码示例)
  • 45-使用scale实现图形缩放
  • 探索 .NET 桌面开发:WinForms、WPF、.NET MAUI 和 Avalonia 的全面对比(截至2025年7月)
  • 炼丹炉 TD-trainer 的安装与部署,LoRA、dreambooth
  • <三>Sping-AI alibaba 文生图
  • Cursor/VScode ,点击运行按钮,就打开新的终端,如何设置为在当前终端运行文件而不是重新打开终端----一招搞定篇
  • 数字孪生技术引领UI前端设计新潮流:虚拟现实的深度集成
  • 在sf=0.1时测试fireducks、duckdb、polars的tpch
  • OpenLayers 设置线段样式
  • 深入学习c++之---AVL树
  • 支持零样本和少样本的文本到语音48k star的配音工具:GPT-SoVITS-WebUI
  • 完成ssl不安全警告
  • DQL-6-分页查询
  • Redis的编译安装
  • PVE DDNS IPV6
  • 超详细yolo8/11-detect目标检测全流程概述:配置环境、数据标注、训练、验证/预测、onnx部署(c++/python)详解
  • Altium Designer使用教程 第一章(Altium Designer工程与窗口)
  • ESXi 8.0 SATA硬盘直通
  • python-字符串
  • 量化可复用的UI评审标准(试验稿)
  • OPENPPP2 VDNS 核心域模块深度解析
  • 电源管理芯片(PMIC) 和 电池管理芯片(BMIC)又是什么?ING
  • webpack+vite前端构建工具 -11实战中的配置技巧
  • 合肥工会入会的注意事项和常见问答
  • springBoot接口层时间参数JSON序列化问题,兼容处理
  • Modbus_TCP_V4 客户端
  • Day52
  • 人工智能-基础篇-18-什么是RAG(检索增强生成:知识库+向量化技术+大语言模型LLM整合的技术框架)
  • ES6-in 的用法
  • Apollo自动驾驶系统中Planning(路径规划)模块的架构设计和核心逻辑