地址 https://www.acwing.com/problem/content/description/43/

题目描述
请实现一个函数按照之字形顺序从上向下打印二叉树。

即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

样例

输入如下图所示二叉树[, , , null, null, , , null, null, null, null]

   / \

     / \

输出:[[], [, ], [, ]]

算法1
在上一题的基础上 加上了一个左右打印标志 如果标志为真 则逆向一下输入的vector

C++ 代码

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> res;
queue<TreeNode*> que;
int leftToright = ; void bfs()
{ while(!que.empty()){
vector<int> lineVec;
while(!que.empty() && NULL != que.front() ){
TreeNode* p = que.front();
que.pop();
lineVec.push_back(p->val);
if(p->left!=NULL)
que.push(p->left);
if(p->right!=NULL)
que.push(p->right);
}
if(leftToright == ){
reverse(lineVec.begin(),lineVec.end());
}
res.push_back(lineVec);
leftToright = !leftToright; if(!que.empty()){
que.pop();
}
if(!que.empty()){
que.push(NULL);
}
}
} vector<vector<int>> printFromTopToBottom(TreeNode* root) {
if(root == NULL) return res;
que.push(root); que.push(NULL); leftToright = !leftToright;
bfs(); return res;
}
}; 作者:defddr
链接:https://www.acwing.com/solution/acwing/content/3662/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

AcWing 45. 之字形打印二叉树的更多相关文章

  1. 【剑指offer】之字形打印二叉树,C++实现

    原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打 ...

  2. 《剑指offer》第三十二题(之字形打印二叉树)

    // 面试题32(三):之字形打印二叉树 // 题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺 // 序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印, / ...

  3. 剑指offer:按之字形打印二叉树(栈|双向队列+中序遍历)

    1. 题目描述 /** 请实现一个函数按照之字形打印二叉树, 即第一行按照从左到右的顺序打印, 第二层按照从右至左的顺序打印, 第三行按照从左到右的顺序打印, 其他行以此类推. */ 2. 双向队列 ...

  4. Go语言实现:【剑指offer】按之字形打印二叉树

    该题目来源于牛客网<剑指offer>专题. 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. ...

  5. 剑指offer-面试题32-之字形打印二叉树-二叉树栈

    /* 题目: 分行按层自上向下呈之字形打印二叉树.第一行从左到右,第二行从右到左,第三行从左到右... */ /* 思路: 使用两个栈stack1和stack2. stack1存储从左向右打印的节点, ...

  6. 32-3题:LeetCode103. Binary Tree Zigzag Level Order Traversal锯齿形层次遍历/之字形打印二叉树

    题目 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 ...

  7. Binary Tree Zigzag Level Order Traversal(z字形打印二叉树)

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  8. 剑指offer系列34----按之字形顺序打印二叉树

    [题目]请实现一个函数按照之字形打印二叉树, * 即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印, * 其他行以此类推. 未优化,不是最优解,博主用的是队列 ...

  9. 剑指Offer-按之字形顺序打印二叉树

    package Tree; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** * ...

随机推荐

  1. C# -- 模拟扑克牌发牌

    C# -- 模拟扑克牌发牌 1.  User 类: 玩家 public class User { private List<PaperCard> listCard = new List&l ...

  2. C#中的时间戳

    来源:https://blog.guoqianfan.com/2019/11/24/timestamp-in-csharp/ 什么是时间戳 时间戳默认是Unix时间戳. 首先要清楚JavaScript ...

  3. ubuntu安装navicat

    ubuntu下安装navicat1.官网下载https://www.navicat.com.cn/download/navicat-premium,不清楚系统是32位的还是64位的,可以用”uname ...

  4. IntelliJ IDEA 2019.2.2同个项目运行多次的方法

    IntelliJ IDEA默认运行项目后,再点击运行就是重启,但有时候,需要配置项目的不同端口号,同时运行. 步骤如下: 1.点击IDEA右上角项目的隐藏下拉框,出现下拉列表,点击Edit Confi ...

  5. 自建KMS服务器激活Windows office

    一.KMS服务器环境介绍    操作系统Centos 7.x  Windows Server 也是可以的,此处以Centos7为例安装,使用默认1688端口号 二.服务端安装过程: 1.下载安装包(这 ...

  6. Anaconda创建环境失败,提示无法定位程序输入点

    https://blog.csdn.net/qq_37465638/article/details/100071259 这篇博客写得很清楚,是anaconda下Library下lib下的一个文件和DD ...

  7. liunxCPU和内存,磁盘等资源

    1.Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命令行界面版本. ...

  8. 项目如何部署在linux系统上

    前面已经安装好centos的系统,网络配置,以及部署的环境已成功啦... 下面记录的是如何部署一个项目 四个步骤: (1)放war包 (2)执行数据库脚本 (3)修改数据库的配置文件 (4)重启tom ...

  9. 【SQL】多表查询中的 外连接 ,on,where

    先简单粗暴给个结论,多表连结查询中,on比where更早起作用,系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行匹配过滤,where后语句为真,则能查询出来,而通过外连接 ...

  10. 如何以管理员方式打开VS

    第一种 打开VS快捷方式的属性对话框. 勾选"用管理员身份运行" 但是这种方式只有在点击快捷方式直接打开vs时是一管理员身份启动的,也就是如果直接打开Solution,则不是管理员 ...