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

在做题中学习(91):二叉树的锯齿形层序遍历

解法:队列 + 模拟

思路:用队列模拟,先让头结点入队列,入ret结果集,在队列不为空时,取队列中每一个元素进行左右孩子的入队列,并且同层节点的左右孩子都入完毕之后,才能加入tmp结果集并进入下一层。发现偶数层数对应的一组节点锯齿形遍历时需要逆序,因此还需要一个变量记录当前的层数,如果是偶数层需要让tmp结果集逆序后再加入ret中。

附上完整代码:

class Solution 
{
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {if(root == nullptr)return {};vector<vector<int>> ret;queue<TreeNode*> q;ret.push_back({root->val});q.push(root);int count = 1;while(!q.empty()){int sz = q.size();vector<int> r;for(int i = 0;i<sz;i++){TreeNode* tmp = q.front(); q.pop();if(tmp->left){r.push_back(tmp->left->val);q.push(tmp->left);}if(tmp->right){r.push_back(tmp->right->val);q.push(tmp->right);}}count++;if(count % 2 == 0)reverse(r.begin(),r.end());if(r.size())ret.push_back(r);}        return ret;}
};

http://www.xdnf.cn/news/19062.html

相关文章:

  • Vue3 中的 v-model 语法糖
  • 什么是token,什么叫词嵌入
  • linux系统学习(9.文件系统管理)
  • Linux Shell 编程
  • Less介绍Less变量
  • C/C++ 编程实战 -- CMake用法
  • 隧道搭建技术
  • C++/python解决OpenCV的窗口被渲染到了屏幕外,导致imshow方法无法弹出窗口问题
  • JDK12安装步骤及下载(附小白详细教程)
  • 钉钉补卡事件处理方案
  • 算法---字符串
  • FDTD_mie散射_仿真学习(2)
  • 【机器人概念设计软件操作手册】 建模技巧与最佳实践
  • 自适应RAG架构:智能检索增强生成的演进与实现
  • 前端如何使用canvas实现截图
  • Python OpenCV图像处理与深度学习:Python OpenCV入门-图像处理基础
  • Linux之Docker虚拟化技术(二)
  • Mysql系列--11、使用c/c++访问mysql服务
  • 软件安装教程(二):Pycharm安装与配置(Windows)
  • DeepSeek大模型风靡云平台,百度智能云、阿里云、腾讯云等多个平台宣布上线DeepSeek模型
  • java_web 日志配置
  • 瑞芯微RK3576开发板Android14三屏异显开发教程
  • 【项目思维】通过编写一个贪吃蛇小程序,并移植到嵌入式设备上,解析编程思维的本质
  • SAP-ABAP:SAP 数值显示格式控制:负号前置方法与最佳实践总结
  • 一般纳税人
  • JavaScript 数组核心操作实战:最值获取与排序实现(从基础到优化)
  • CSS text-decoration-thickness:精细控制文本装饰线粗细的新属性
  • 光学设计中干涉现象难预测?OAS 软件多结构干涉来解决
  • Word文档怎么打印?Word打印技巧?【图文详解】单面/双面/指定页面/逆序等Word打印选项
  • Linux学习——sqlite3