剑指offer(C++)-JZ78:把二叉树打印成多行(数据结构-树)
作者:翟天保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:把二叉树打印成多行(数据结构-树)相关推荐
- 剑指offer(C++)-JZ8:二叉树的下一个结点(数据结构-树)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结 ...
- 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示 数据范围:输 ...
- 剑指offer——面试题60:把二叉树打印成多行
剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...
- 《剑指offer》-- 二叉树的下一个结点、对称二叉树、按之字性顺序打印二叉树、把二叉树打印成多行
一.二叉树的下一个结点: 1.题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 2.解题思路: 分析二叉树 ...
- 剑指offer编程试题Java实现--60.把二叉树打印成多行
个人博客:小景哥哥 60.把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. import java.util.ArrayList; import java ...
- 剑指offer——复习1:二叉树三种遍历方式的迭代与递归实现
剑指offer--复习1:二叉树三种遍历方式的迭代与递归实现 20180905更新:这个博客中的解法不是很好,看相应的LeetCode题目笔记~~~ 我感觉此博客中的说法更容易让人理解:https:/ ...
- 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java
<LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...
- 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java
<LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...
- LeetCode Algorithm 剑指 Offer 28. 对称的二叉树
剑指 Offer 28. 对称的二叉树 Ideas 一开始想的有问题,看了例子以为对称二叉树的中序遍历序列是回文数组,然后就用这么写了,结果到第192个测试用例[1,2,2,2,null,2]就失败了 ...
最新文章
- 拿来就能用!Dijkstra 算法实现快递路径优化
- 10.LeetCode第九题--有效的数独--哈希表的经典应用
- python缩进格式作用_关于自动缩进格式问题,高手帮忙!
- SAP Spartacus cxFocus增添了refresh Focus功能后的一些考虑
- [css] css中Scroll-behavior属性有什么应用场景?
- 如何下服务器上文件是否存在问题,怎么读取服务器数据库文件是否存在
- 如果打开MSSQL server 显示无项目的解决方法
- java版的贪吃蛇。
- java 线程 condition_JAVA多线程按指定顺序执行线程 Condition应用
- MindMaster Pro 7.2中文版 — 亿图思维导图
- IPTV在线服务器地址,德芯IPTV网关服务器,德芯直播点播服务器
- Uml工具StarUML破解
- 国外科研论文搜索网站汇总
- PHP程序员全栈,PHP程序员画的 “全栈工程师技能树” 思维导图
- 在启动时在Raspberry Pi上运行程序的五种方法
- i5 8250u java_i5 8250U整机综合性能_笔记本评测-中关村在线
- GIS添加图层、查询详细
- kotlin的必修之路
- K-Means聚类实验报告实例
- python语言打小数点_如何在python中打小数点-问答-阿里云开发者社区-阿里云
热门文章
- 我的python之路(二):python环境安装
- 创建华丽 UI 的 7条规则 第一部分 (2019年更新)
- bc显示小数点前的0
- 【WCF】错误处理(二):错误码―—FaultCode
- uboot在s3c2440上的移植(1)
- 自学篇之----html的所有input标签 以及post和get提交之间的区别
- php分类程序,PHP无限分类实现程序_PHP教程
- Python基础-“百钱百鸡”入门逻辑题(刚开始的建议藏起来)
- python网络爬图_Python爬虫爬图片需要什么
- 三菱PLC编程线缆制作