剑指offer:分行从上往下打印二叉树
文章目录
- 分析
- 题目来源
分析
思路:
在原来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:分行从上往下打印二叉树相关推荐
- 剑指offer 32. 从上到下打印二叉树
声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.不分行从上到下打印二叉树 1.1. 问题描述 从上到下打印出二叉树的每一个结点,同一层的结点按照从左到右的顺序打印. 如二叉 ...
- 剑指 Offer 32 . 从上到下打印二叉树
main函数测试代码: 按标准输入输出,比如输入: 3,9,20,null,null,15,7 public static void main(String[] args) {//输入3,9,20,n ...
- 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表
一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...
- 剑指offer——32.从上到下打印二叉树
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 知识点: 像这种不是按照指针顺序打印的都需要引入辅助空间,由于分析可知,先进先出,因此我们引入了两端都可进出的队列deque,常用操作, ...
- 《剑指offer》从上往下打印二叉树
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:此题利用队列可以很好的解决层次打印,只需要按顺序入队以及出队就可以了(一点说明:root为null的时候需要考虑,java中的队列是 ...
- 剑指offer之从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 来源:力扣(LeetC ...
- 剑指Offer之从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 二叉树的层次遍历,水题...有一个坑:如果root是空的,直接返回空vector,一定要注意边界条件!!!!!!!!! AC ...
- 剑指offer:从上往下打印二叉树
文章目录 分析 来源 分析 思路 典型的bfs模板题,这里使用STL中的queue,没用数组模拟队列. STL的思路:初始化队列时,根root入队:对于bfs主体过程while循环内,取队头元素,队头 ...
- 《剑指Offer》 从上往下打印出二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 其实就是层序遍历,设置一个TreeNode*类型的队列s,用来保存二叉树层序遍历的节点,因为队列是先进先出,所以很好地控制了 ...
- 剑指offer23:从上到下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 用队列来实现: 从根节点开始,每次打印一个节点都判断该节点是否有子节点,如果有则放在队列末端: 取出队列最前面的节点,重复1 ...
最新文章
- css通配选择符用什么表示,css的选择符
- 关于异步请求的一些事
- 调用webservice时提示对操作的回复消息正文进行反序列化时出错
- c++实现单例类(懒汉与饿汉)
- java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...
- synchronized 和Lock区别
- 如何侦听网线数据_网络工程师 | 七类网线水晶头又如何制作?
- bzoj 3881 [Coci2015]Divljak——LCT维护parent树链并
- Java基础篇:if控制语句
- spring通用获取ioc容器中配置的bean的工具类
- Charles使用教程
- Ajaxsubmit表单提交
- 普元 EOS Platform 7.6 支持 openGauss2.0数据库方案
- AEJoy —— 表达式之模拟超越与反弹(五)【JS】
- 阿里云OSS上传图片慢的处理方案
- oracle给表更名,Oracle重命名表
- c语言写一元一次函数图像,一次函数与一元一次不等式(洋葱数学)
- Mac 更新port卡住怎么办?
- 冯诺伊曼计算机釆用二进制,大一新生计算机考试重点复习资料(完整版).docx...
- Python爬虫爬取相关图片
热门文章
- ORACLE普通表转换成分区表
- Compound Interest Calculator4.0
- 初级软件实作 - 星便笺 - 之二 - 富文本控件扩展
- 【转】心目中的编程高手
- struts2前台获取setattribute为空指针异常_告诉你,这样设计 Java 异常更优雅,更牛逼!...
- 大学计算机基础python学多久_怎么自学python,大概要多久?
- 如何配置php的ip地址吗,如何手动配置IP地址及防火墙设置
- ctr 平滑_预算平滑技术在58商业的探索与实践
- vivado SOC——hello word(上)建立SOC系统
- CentOS8更换源后失败问题