【NC14 按之字形顺序打印二叉树】
描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
数据范围:0 \le n \le 15000≤n≤1500,树上每个节点的val满足 |val| <= 100∣val∣<=100
要求:空间复杂度:O(n)O(n),时间复杂度:O(n)O(n)
例如:
给定的二叉树是{1,2,3,#,#,4,5}
该二叉树之字形层序遍历的结果是
[
[1],
[3,2],
[4,5]
]
示例1
输入:
{1,2,3,#,#,4,5}
返回值:
[[1],[3,2],[4,5]]
说明:
如题面解释,第一层是根节点,从左到右打印结果,第二层从右到左,第三层从左到右。
示例2
输入:
{8,6,10,5,7,9,11}
返回值:
[[8],[10,6],[5,7,9,11]]
示例3
输入:
{1,2,3,4,5}
返回值:
[[1],[3,2],[4,5]]
解题报告:
可以像代码里一样,用两个队列。或者用一个队列+一个cnt来保存某一层的节点个数。
/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
*/
class Solution {
public:vector<vector<int> > Print(TreeNode* pRoot) {vector<vector<int> > ans;if(!pRoot) return ans;queue<TreeNode* > q[2];int flag = 0;q[flag].push(pRoot);while(q[flag].size()) {vector<int> t;while(q[flag].size()) {TreeNode* cur = q[flag].front();q[flag].pop();t.push_back(cur->val);if(cur->left) q[!flag].push(cur->left);if(cur->right) q[!flag].push(cur->right);}if(flag) reverse(t.begin(), t.end());ans.push_back(t);flag = !flag;}return ans;}};
【NC14 按之字形顺序打印二叉树】相关推荐
- 牛客题霸 NC14 按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0 解决方案 Go func Print(pRoot *TreeNod ...
- 按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 此道题目可以跟 把二叉树打印成多行:htt ...
- 剑指offer——面试题61:按之字形顺序打印二叉树
剑指offer--面试题61:按之字形顺序打印二叉树 Solution1: 基于上一题的解法,缺点:效率低下! /* struct TreeNode {int val;struct TreeNode ...
- java面试(二十六)--(1)J2EE中常用名词(2)讲一下redis的主从复制怎么做的?(3)请谈谈你对Javaweb开发中的监听器的理解?(4)按之字形顺序打印二叉树(5)内部类大全
1.J2EE中常用名词 web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET直接跟容器中的环境变量接**互,不必关注其它系统问题.主要有WEB服务器来 ...
- (剑指Offer)面试题61:按之字形顺序打印二叉树
题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 思路: 按照广度优先遍历来遍历二叉树,但是需要 ...
- [剑指Offer] 59.按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. [思路]先按层次遍历存入,通过设立标志位,将 ...
- 剑指Offer(Java实现)按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路 方法一:利用两个栈的辅助空间分别存 ...
- 剑指offer-按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 使用双向链表,先把当前行按顺序打印,再取出当 ...
- 打印list_按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路及代码 这题是 LiShun:把二叉 ...
最新文章
- 【皇甫】☀说说那些选择器
- [基础]iOS 可视化编程(全系列)
- Marketing Cloud launchpad中的meta标签
- 基于Tablestore多元索引打造亿量级店铺搜索系统
- FCKeidtor的toolbarset的设置
- js 判断字符串为空的方法
- 6.1、Android Studio的Android Monitor概览
- android应用热修复与插件化实践之路
- NoSql数据库确实非常适合网站
- php7 imagick扩展,php7如何安装imagick扩展
- Gale-Shapley 稳定匹配算法的C++实现
- Geos库学习之(二)——使用Geos库创建简单的几何对象
- 中国石油大学(北京)-《 公共社交礼仪 》-​​​​​​​第一阶段在线作业
- 2021年应用市场放假安排
- python海龟画图函数汇总
- PHP初级程序员出路
- 日本最惨数学天才!37岁裸辞,房子被政府没收,向全村人乞讨,一家五口只能吃野菜.........
- 半导体产业链全梳理 哪个细分领域更具投资价值?
- 数据分析报告的 6 个步骤
- cmd 组合命令和管道命令的使用
热门文章
- boost helloworlld
- Oracle数据库游标操作
- 自动产生fsm代码的工具_代码自动生成工具
- iptables nat实验_【零基础学云计算】LVS负载均衡群集之NAT模式搭建 (实践篇)...
- 1到n阶乘算法的改进
- ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法
- python每周小测验答案_python第一周小测验答案Centos下更新Python版本
- vue v-if判断数组元素的值_Vue项目上线做的一些基本优化
- linux修改某个用户的数组,linux-shell编程1:变量和数组
- 前驱和后驱什么意思_为什么只有豪车才敢用后驱