作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中返回。

例如:
给定的二叉树是{1,2,3,#,#,4,5}

该二叉树多行打印层序遍历的结果是

[

[1],

[2,3],

[4,5]

]

数据范围:二叉树的节点数0≤n≤1000,0≤val≤1000

要求:空间复杂度 O(n),时间复杂度 O(n)

示例:

输入:

{1,2,3,#,#,4,5}

返回值:

[[1],[2,3],[4,5]]

解题思路:

本题考察数据结构树的使用,运用了队列先入先出的特性。用队列动态存储某一层的节点,对其进行遍历,将节点的值放入vector的同时,把节点弹出队列,并将节点下一层的左右子树存放进队列中;当队列为空的时候,说明二叉树完全遍历,解题完毕。

测试代码:

/*
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>> v;if(!pRoot)return v;queue<TreeNode*> q;// 根节点存入队列q.push(pRoot);// 队列存放了某一层的节点while(!q.empty()){int size=q.size();vector<int>temp;// 遍历该层,并将其放入vector,弹出queuewhile(size--){TreeNode* node=q.front();temp.push_back(node->val);q.pop();// 存下一层节点if(node->left)q.push(node->left);if(node->right)q.push(node->right);}v.push_back(temp);}return v;}};

剑指offer(C++)-JZ78:把二叉树打印成多行(数据结构-树)相关推荐

  1. 剑指offer(C++)-JZ8:二叉树的下一个结点(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结 ...

  2. 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示 数据范围:输 ...

  3. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

  4. 《剑指offer》-- 二叉树的下一个结点、对称二叉树、按之字性顺序打印二叉树、把二叉树打印成多行

    一.二叉树的下一个结点: 1.题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 2.解题思路: 分析二叉树 ...

  5. 剑指offer编程试题Java实现--60.把二叉树打印成多行

    个人博客:小景哥哥 60.把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. import java.util.ArrayList; import java ...

  6. 剑指offer——复习1:二叉树三种遍历方式的迭代与递归实现

    剑指offer--复习1:二叉树三种遍历方式的迭代与递归实现 20180905更新:这个博客中的解法不是很好,看相应的LeetCode题目笔记~~~ 我感觉此博客中的说法更容易让人理解:https:/ ...

  7. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  8. 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java

    <LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...

  9. LeetCode Algorithm 剑指 Offer 28. 对称的二叉树

    剑指 Offer 28. 对称的二叉树 Ideas 一开始想的有问题,看了例子以为对称二叉树的中序遍历序列是回文数组,然后就用这么写了,结果到第192个测试用例[1,2,2,2,null,2]就失败了 ...

最新文章

  1. 拿来就能用!Dijkstra 算法实现快递路径优化
  2. 10.LeetCode第九题--有效的数独--哈希表的经典应用
  3. python缩进格式作用_关于自动缩进格式问题,高手帮忙!
  4. SAP Spartacus cxFocus增添了refresh Focus功能后的一些考虑
  5. [css] css中Scroll-behavior属性有什么应用场景?
  6. 如何下服务器上文件是否存在问题,怎么读取服务器数据库文件是否存在
  7. 如果打开MSSQL server 显示无项目的解决方法
  8. java版的贪吃蛇。
  9. java 线程 condition_JAVA多线程按指定顺序执行线程 Condition应用
  10. MindMaster Pro 7.2中文版 — 亿图思维导图
  11. IPTV在线服务器地址,德芯IPTV网关服务器,德芯直播点播服务器
  12. Uml工具StarUML破解
  13. 国外科研论文搜索网站汇总
  14. PHP程序员全栈,PHP程序员画的 “全栈工程师技能树” 思维导图
  15. 在启动时在Raspberry Pi上运行程序的五种方法
  16. i5 8250u java_i5 8250U整机综合性能_笔记本评测-中关村在线
  17. GIS添加图层、查询详细
  18. kotlin的必修之路
  19. K-Means聚类实验报告实例
  20. python语言打小数点_如何在python中打小数点-问答-阿里云开发者社区-阿里云

热门文章

  1. 我的python之路(二):python环境安装
  2. 创建华丽 UI 的 7条规则 第一部分 (2019年更新)
  3. bc显示小数点前的0
  4. 【WCF】错误处理(二):错误码―—FaultCode
  5. uboot在s3c2440上的移植(1)
  6. 自学篇之----html的所有input标签 以及post和get提交之间的区别
  7. php分类程序,PHP无限分类实现程序_PHP教程
  8. Python基础-“百钱百鸡”入门逻辑题(刚开始的建议藏起来)
  9. python网络爬图_Python爬虫爬图片需要什么
  10. 三菱PLC编程线缆制作