【二叉树】Leetcode 二叉树的锯齿形层序遍历

题目讲解

103. 二叉树的锯齿形层序遍历
在这里插入图片描述


算法讲解

这道题其实是和N叉树层序遍历是一样的,只不过是要求每一次的遍历的方向不一样;注意:这一次的使用的队列不能够是queue了,因为需要从后往前遍历容器,所以就可以使用vector作为队列

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {vector<vector<int>> ret;int flag = 1;  //第一次从左向右if(!root)return ret;vector<TreeNode*>q;q.push_back(root);while(!q.empty()){int levesize = q.size();vector<int>temp;//遍历层序 分左右if(flag){for(int i = 0; i < levesize; i++){if(q[i])temp.push_back(q[i]->val);}flag = 0;} else {for(int i = levesize-1; i >=0; i--){if(q[i])temp.push_back(q[i]->val);}flag = 1;}//往队列里面赛数据 塞下一层的节点for(int i = 0; i < levesize; i++){TreeNode* cur = q.front();q.erase(q.begin());  //删除队列首部元素if(cur->left)q.push_back(cur->left);if(cur->right)q.push_back(cur->right);}ret.push_back(temp);}return ret;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/687965.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(Java)心得:LeetCode——15.三数之和

一、原题 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。…

盘点自动驾驶的技术发展趋势

自动驾驶技术在不断发展变快&#xff0c;我们之前提过算法岗如今越来越卷&#xff0c;从今年的就业局势看&#xff0c;前年还属于蓝海行业的自动驾驶&#xff0c;今年就已经满满关上了招揽之门——呈红海之势。作为在这个行业中摸爬滚打的一以子&#xff0c;我们到底该如何纵观…

LeetCode 112. 路径总和 || LeetCode 113. 路径总和ii

LeetCode 112. 路径总和 1、题目 题目链接&#xff1a;112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true…

Yii2 自动生成php代码

文档地址&#xff1a;入门&#xff08;Getting Started&#xff09;: 用 Gii 生成代码&#xff08;Generating Code with Gii&#xff09; - Yii 2.0 权威指南 - 文档 - Yii Framework 中文网 找到配置文件&#xff0c;以我的项目为例&#xff1a; 因为的是开启了路由美化所以访…

二级等保与三级等保的区别有哪些

二级等保和三级等保的区别主要体现在保护能力、安全要求、监管严格程度等方面。以下是根据提供的搜索结果中关于二级和三级等保的具体差异&#xff1a; 1. 保护能力&#xff1a; 二级等保要求信息系统能够防护来自外部小型组织的威胁&#xff0c;发现重要的安全漏洞和事件&…

浴厕收拾干净能留财,你可知道?

常常给客户看风水&#xff0c;积累了很多的经验。虽然峰民是一位说话很直的人&#xff0c;不喜欢做作&#xff0c;不喜欢遮掩。但在工作上&#xff0c;在学术上&#xff0c;是不马虎的。每次峰民分析给大家的都是很实用&#xff0c;很经典的风水常识。 今天谈谈浴厕风水。作为…

经开区创维汽车车辆交接仪式顺利举行,守护绿色出行助力低碳发展

5月10日&#xff0c;“创维新能源汽车进机关”交车仪式于徐州顺利举行&#xff0c;20辆创维EV6 II正式交付经开区政府投入使用。经开区陈琳副书记、党政办公室副主任张驰主任、经开区公车管理平台苑忠民科长、创维汽车总裁、联合创始人吴龙八先生、创维汽车营销公司总经理饶总先…

C++学习第二十八课:C++ 中的智能指针详解

在 C 中&#xff0c;内存管理是每个程序员都需要面对的问题。在处理动态分配的内存时&#xff0c;如果忘记释放内存&#xff0c;可能会导致内存泄漏。为了解决这个问题&#xff0c;C11 引入了智能指针的概念。本文将详细介绍 C 中使用智能指针的方法&#xff0c;并结合实际案例…

护网中经常使用的一些工具(非常详细)零基础入门到精通,收藏这一篇就够了

通用工具 工具类型工具地址内网扫描https://github.com/shadow1ng/fscan哥斯拉Webshell管理https://github.com/BeichenDream/Godzill aARL 资产侦察灯塔https://github.com/TophantTechnology/AR Laliyun-accesskey-Toolshttps://github.com/mrknow001/aliyun-acc esskey-Too…

sqli-labs靶场第十四关

目录 1&#xff1a;分析 找闭合符&#xff1a; 2&#xff1a;开始注入 报错注入&#xff1a; 注入数据库名&#xff1a; 注入表名&#xff1a; 注入列名&#xff1a; 注入具体值&#xff1a; 1&#xff1a;分析 经过我们的实验发现当我们输入的密码后面存在双引号时会报…

「网络流 24 题」负载平衡 【费用流】

「网络流 24 题」负载平衡 思路 首先我们从源点向每个仓库连边&#xff0c;容量为 a i a_i ai​&#xff0c;费用为 0 0 0&#xff1b;既然所有仓库物品相同&#xff0c;那么数量一定是总物品的平均值&#xff0c;我们提前算出来 a v g avg avg&#xff0c;然后从每个仓库向…

批量扩充库存地点操作手册

业务场景 售后库存需要扩充库存地点,避免影响生产MRP运算 前提条件 必须有MMSC_MASS权限 数据导出 1、前台可以通过MB52导出某库存地点下的所有物料信息 2、由IT导出该部分数据,供业务部门使用。 案例: 以下以3008仓扩充3020仓为例 操作指引: 输入事务码MMSC_MASS…