LeetCode 103. 二叉树的锯齿形层次遍历(BFS / 双栈)

1. 题目

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

例如:
给定二叉树 [3,9,20,null,null,15,7],3/ \9  20/  \15   7
返回锯齿形层次遍历如下:[[3],[20,9],[15,7]
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 BFS,队列,反转

class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {if(root == NULL)return {};queue<TreeNode*> q;TreeNode *tp;q.push(root);vector<int> lv;vector<vector<int>> ans;int n, depth = 0;while(!q.empty()){n = q.size();while(n--){tp = q.front();q.pop();lv.push_back(tp->val);     	if(tp->left)q.push(tp->left);if(tp->right)q.push(tp->right);}depth++;if(depth%2 == 0)//对相应的层,进行反转reverse(lv.begin(),lv.end());ans.push_back(lv);lv.clear();}return ans;}
};

2.2 双栈解题

  • 奇偶层分别存在不同的栈里
  • 某个栈里的数据先入栈右节点
class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {if(root == NULL)return {};stack<TreeNode*> l, r;TreeNode *tp;l.push(root);vector<int> lv;vector<vector<int>> ans;while(!l.empty() || !r.empty()){while(!l.empty()){tp = l.top();l.pop();lv.push_back(tp->val);     	if(tp->left)r.push(tp->left);if(tp->right)r.push(tp->right);}if(!lv.empty()){ans.push_back(lv);lv.clear();}while(!r.empty()){tp = r.top();r.pop();lv.push_back(tp->val);if(tp->right)l.push(tp->right);if(tp->left)l.push(tp->left);  			}if(!lv.empty()){ans.push_back(lv);lv.clear();}	}return ans;}
};

在这里插入图片描述

2.3 双端队列

class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {if(root == NULL)return {};queue<TreeNode*> q;TreeNode *tp;q.push(root);deque<int> lv;vector<vector<int>> ans;int n, depth = 0;while(!q.empty()){n = q.size();while(n--){tp = q.front();q.pop();if(depth%2 == 0)lv.push_back(tp->val);elselv.push_front(tp->val);if(tp->left)q.push(tp->left);if(tp->right)q.push(tp->right);}depth++;ans.push_back(vector<int>(lv.begin(),lv.end()));lv.clear();}return ans;}
};

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

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

相关文章

KeyError: ‘segment_ids paddlehub中出现segement_ids错误解决方案

examples.append((encoded_inputs[‘input_ids’], encoded_inputs[‘segment_ids’])) KeyError: ‘segment_ids’ 找到源代码&#xff1a;输出encoded_inputs 将segments_ids改成 token_type_ids解决问题

Android增量代码测试覆盖率工具

美团业务快速发展&#xff0c;新项目新业务不断出现&#xff0c;在项目开发和测试人员不足、开发同学粗心的情况下&#xff0c;难免会出现少测漏测的情况&#xff0c;如何保证新增代码有足够的测试覆盖率是我们需要思考的问题。 先看一个bug&#xff1a; 以上代码可能在onDesto…

ACL'21 | 多模态数值推理新挑战,让 AI 学解几何题

文 | 陈嘉奇编 | 小轶从小到大&#xff0c;数学都是一门令人头秃充满魅力的学科。从基本的代数、几何&#xff0c;到高数微积分&#xff0c;各类数学问题都对答题者的逻辑推理能力都有着不同程度的挑战。而逻辑推理能力一直以来都是 AI 发展的核心目标之一。学术界对于 AI 自动…

论文浅尝 - ICLR2021 | 从信息论的角度提高语言模型的鲁棒性

笔记整理 | 胡楠&#xff0c;东南大学来源&#xff1a;ICLR 2021论文下载地址&#xff1a;https://arxiv.org/pdf/2010.02329.pdf动机最近的研究表明&#xff0c;BERT和RoBERTa这种基于BERT的模型容易受到文字对抗攻击的威胁。论文旨在从信息理论的角度解决此问题并提出InfoBER…

LeetCode 74. 搜索二维矩阵(二分查找)

1. 题目 编写一个高效的算法来判断 m x n 矩阵中&#xff0c;是否存在一个目标值。该矩阵具有如下特性&#xff1a; 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34,…

美团点评旅游搜索召回策略的演进

本文内容与6月22日第22期美团点评技术沙龙“美团点评AI实践”主题演讲一致&#xff0c;欢迎大家去现场和作者交流。 关注“美团点评技术团队”微信公众号&#xff0c;第一时间获取沙龙最新信息&#xff0c;还可以查阅往期沙龙PPT/视频。 美团点评作为最大的生活服务平台&#x…

从论文到PPT,一键生成!从此报告不用愁!

文 | 子龙编 | 小轶俗话说&#xff1a;“行百步者半九十”&#xff0c;论文接受固然可喜可贺&#xff0c;然而这只是万里长征第一步。一份具有影响力的工作少不了一个后期的宣传&#xff0c;做好一个PPT绝对是一个技术活。不知道小伙伴们平时怎么做PPT&#xff0c;是复制粘贴长…

资源征集 | 2021年全国知识图谱与语义计算大会开放资源征集(Resource Track)通知...

大会时间&#xff1a;2021年8月18日-21日&#xff0c;广州资源征集截止: 2021年5月20日开放的资源对促进知识图谱和语义计算相关的科学研究及企业应用十分重要。CCKS 2021将组织开放资源征集&#xff08;Resource Track&#xff09;&#xff0c;旨在支持和促进学术界和工业界的…

WebView性能、体验分析与优化

在App开发中&#xff0c;内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用&#xff0c;也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便利性的同时&#xff0c;WebView的性能体验却备受质疑&#xff0c;导致很多客户端中需要动态更新等页面时不得…

LeetCode 240. 搜索二维矩阵 II(二分查找 分治)

文章目录1. 题目2. 解题2.1 从左下角或者右上角开始搜索2.2 分治算法1. 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下…

NLP哪个细分方向最具社会价值?

文 | 小戏让我们来大胆设想一个场景&#xff0c;老板突然发财搞到一笔钱&#xff0c;大手一挥给你五百万&#xff0c;让你去做自然语言处理的研究&#xff0c;你该先研究哪一个细分领域&#xff1f;机器翻译好像不错&#xff0c;信息抽取也很必要&#xff0c;对话系统更是 NLP …

论文浅尝 | 通过阅读实体描述进行零样本的实体链接

笔记整理 | 赖泽升&#xff0c;东南大学本科生来源&#xff1a;ACL2019动机先前实体链接的大多数工作都着重于与通用实体数据库的链接&#xff0c;通常希望链接到专门的实体词典&#xff0c;例如法律案件&#xff0c;公司项目描述&#xff0c;小说中的字符集或术语表。但这些工…

LeetCode 29. 两数相除(位运算)

1. 题目 给定两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 示例 1: 输入: dividend 10, divisor 3 输出: 3示例 2: 输入: dividend 7, divisor -…

Git使用的奇技淫巧

源 | Linux公社Git 版本对比相关操作[1] 输出工作区和暂存区的不同。git diff[2] 展示暂存区和最近版本的不同git diff --cached[3] 展示暂存区、工作区和最近版本的不同git diff HEAD[4] 展示本地仓库中任意两个 commit 之间的文件变动git diff <commit-id> <commit-…

Hyperloop,让发布简洁高效

Hyperloop 是什么&#xff1f; Hyperloop 是服务于美团点评客户端的组件发版、持续集成、App 打包构建、资源调度等各个环节的发布调度系统。名称起源于美国 Elon Musk 构想的 Hyperloop 超级高铁&#xff0c;象征着现代、简洁、高效。 Hyperloop 提供了一站式的平台&#xff0…

论文浅尝 | 基于潜在类别信息的实体链接

笔记整理 | 黄一凡&#xff0c;东南大学本科生来源&#xff1a;AAAI2020链接&#xff1a;https://arxiv.org/pdf/2001.01447v1.pdf一、简介作者意识到在利用预训练模型进行实体链接时&#xff0c;往往会将类别信息忽略&#xff0c;因此会导致模型将指称链接到拥有错误类别的错误…

LeetCode 166. 分数到小数(小数除法)

1. 题目 给定两个整数&#xff0c;分别表示分数的分子 numerator 和分母 denominator&#xff0c;以字符串形式返回小数。 如果小数部分为循环小数&#xff0c;则将循环的部分括在括号内。 示例 1: 输入: numerator 1, denominator 2 输出: "0.5"示例 2: 输入: …

百度飞桨弯道超车了吗?!

事情是这样的...前不久&#xff0c;小夕注意到了一份来自权威评测机构IDC发布的《2020年下半年深度学习平台市场份额报告》&#xff1a;▲IDC:2020年中国深度学习平台市场综合份额top 5立刻惊了&#xff01;印象里百度飞桨三年前还只是一个低调、小而美的深度学习框架&#xff…

美团点评酒旅数据仓库建设实践

在美团点评酒旅事业群内&#xff0c;业务由传统的团购形式转向预订、直连等更加丰富的产品形式&#xff0c;业务系统也在迅速的迭代变化&#xff0c;这些都对数据仓库的扩展性、稳定性、易用性提出了更高要求。对此&#xff0c;我们采取了分层次、分主题的方式&#xff0c;本文…

论文小综 | 文档级关系抽取方法(上)

本文作者&#xff1a;陈想&#xff0c;浙江大学在读博士&#xff0c;研究方向为自然语言处理张宁豫&#xff0c;浙江大学助理研究员&#xff0c;研究方向为自然语言处理、知识表示与推理1. 前言关系抽取(Relation Extraction, RE)是从纯文本中提取未知关系事实&#xff0c;是自…