文章目录

  • 分析
  • 题目来源

分析

思路:
在原来bfs的基础上,每一层结束时做一个标记nullptr,每当扫描到这个标记时,就将当前队列中元素存入vector中,并清空中间vector,进入下一层。

这里加标记需要注意的是,当遍历到最后一层时,不用加标记。遍历完最后一层时,queue为空,所以这句代码这样写:if (q.size()) q.push(nullptr);// q不空再加标签nullptr

时间复杂度:O(n),每个元素遍历一遍
ac代码

/*** 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>> printFromTopToBottom(TreeNode* root) {vector<vector<int>> res;if (root == nullptr) return res;queue<TreeNode*> q;q.push(root);q.push(nullptr);vector<int> level;while (q.size()) {auto t = q.front();q.pop();// 正常bfsif(t != nullptr) {level.push_back(t->val);if (t->left) q.push(t->left);if (t->right) q.push(t->right);}// 遇到标记else {res.push_back(level); // 一行存入vector中level.clear();// 这里之所以要判断一下queue不空// 是因为bfs遍历每一层,都会把下一层结点压入队列中// 如果队列为空,则说明已经是最后一层,无需再加标记if (q.size()) q.push(nullptr);}}return res;}
};

题目来源

https://www.acwing.com/problem/content/42/

剑指offer:分行从上往下打印二叉树相关推荐

  1. 剑指offer 32. 从上到下打印二叉树

    声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.不分行从上到下打印二叉树 1.1. 问题描述 从上到下打印出二叉树的每一个结点,同一层的结点按照从左到右的顺序打印. 如二叉 ...

  2. 剑指 Offer 32 . 从上到下打印二叉树

    main函数测试代码: 按标准输入输出,比如输入: 3,9,20,null,null,15,7 public static void main(String[] args) {//输入3,9,20,n ...

  3. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

  4. 剑指offer——32.从上到下打印二叉树

    题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 知识点: 像这种不是按照指针顺序打印的都需要引入辅助空间,由于分析可知,先进先出,因此我们引入了两端都可进出的队列deque,常用操作, ...

  5. 《剑指offer》从上往下打印二叉树

    题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:此题利用队列可以很好的解决层次打印,只需要按顺序入队以及出队就可以了(一点说明:root为null的时候需要考虑,java中的队列是 ...

  6. 剑指offer之从上到下打印二叉树

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 来源:力扣(LeetC ...

  7. 剑指Offer之从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 二叉树的层次遍历,水题...有一个坑:如果root是空的,直接返回空vector,一定要注意边界条件!!!!!!!!! AC ...

  8. 剑指offer:从上往下打印二叉树

    文章目录 分析 来源 分析 思路 典型的bfs模板题,这里使用STL中的queue,没用数组模拟队列. STL的思路:初始化队列时,根root入队:对于bfs主体过程while循环内,取队头元素,队头 ...

  9. 《剑指Offer》 从上往下打印出二叉树

    题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 其实就是层序遍历,设置一个TreeNode*类型的队列s,用来保存二叉树层序遍历的节点,因为队列是先进先出,所以很好地控制了 ...

  10. 剑指offer23:从上到下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 用队列来实现: 从根节点开始,每次打印一个节点都判断该节点是否有子节点,如果有则放在队列末端: 取出队列最前面的节点,重复1 ...

最新文章

  1. css通配选择符用什么表示,css的选择符
  2. 关于异步请求的一些事
  3. 调用webservice时提示对操作的回复消息正文进行反序列化时出错
  4. c++实现单例类(懒汉与饿汉)
  5. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...
  6. synchronized 和Lock区别
  7. 如何侦听网线数据_网络工程师 | 七类网线水晶头又如何制作?
  8. bzoj 3881 [Coci2015]Divljak——LCT维护parent树链并
  9. Java基础篇:if控制语句
  10. spring通用获取ioc容器中配置的bean的工具类
  11. Charles使用教程
  12. Ajaxsubmit表单提交
  13. 普元 EOS Platform 7.6 支持 openGauss2.0数据库方案
  14. AEJoy —— 表达式之模拟超越与反弹(五)【JS】
  15. 阿里云OSS上传图片慢的处理方案
  16. oracle给表更名,Oracle重命名表
  17. c语言写一元一次函数图像,一次函数与一元一次不等式(洋葱数学)
  18. Mac 更新port卡住怎么办?
  19. 冯诺伊曼计算机釆用二进制,大一新生计算机考试重点复习资料(完整版).docx...
  20. Python爬虫爬取相关图片

热门文章

  1. ORACLE普通表转换成分区表
  2. Compound Interest Calculator4.0
  3. 初级软件实作 - 星便笺 - 之二 - 富文本控件扩展
  4. 【转】心目中的编程高手
  5. struts2前台获取setattribute为空指针异常_告诉你,这样设计 Java 异常更优雅,更牛逼!...
  6. 大学计算机基础python学多久_怎么自学python,大概要多久?
  7. 如何配置php的ip地址吗,如何手动配置IP地址及防火墙设置
  8. ctr 平滑_预算平滑技术在58商业的探索与实践
  9. vivado SOC——hello word(上)建立SOC系统
  10. CentOS8更换源后失败问题