C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树
参与人数:4853 时间限制:1秒 空间限制:32768K
提交网址: http://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701?tpId=13&tqId=11175
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
分析:
此题即为二叉树的BFS,使用队列可以解决。
AC代码:
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
struct TreeNode
{
	int val;
	TreeNode *left, *right;
	TreeNode(int x): val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
    vector<int> PrintFromTopToBottom(TreeNode *root){
	vector<int> res(0);
    if(root==NULL) return res;
	queue<TreeNode*> q;
	q.push(root);
	while(!q.empty())
	{
		TreeNode *p= q.front();
		res.push_back(p->val);
		q.pop();
		if(p->left != NULL) q.push(p->left);
		if(p->right != NULL) q.push(p->right);
	}
	return res;
    }     
};
// 以下为测试
int main()
{
	Solution sol;
	vector<int> res;
	TreeNode *root = new TreeNode(1);
    root->right = new TreeNode(2);
    root->right->left = new TreeNode(3); 
	res=sol.PrintFromTopToBottom(root);
	for(int i:res)
		printf("%d ",i);  // 此处为vector遍历的方法,C++11标准支持
	return 0;
}C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解的更多相关文章
- 剑指Offer:面试题23——从上往下打印二叉树(java实现)
		问题描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 按照层次遍历的方法,使用队列辅助. 1.将根结点加入队列. 2.循环出队,打印当前元素,若该结点有左子树,则将其加入队列,若 ... 
- 剑指Offer - 九度1523 - 从上往下打印二叉树
		剑指Offer - 九度1523 - 从上往下打印二叉树2013-12-01 00:35 题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以E ... 
- C++版 - 剑指offer 面试题5:从尾到头打印链表 题解
		面试题5:从尾到头打印链表 提交网址: http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tq ... 
- 剑指offer(22)从上往下打印二叉树
		题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 题目分析 从下打印就是按层次打印,其实也就是树的广度遍历. 一般来说树的广度遍历用队列,利用先进先出的特点来保存之前节点,并操作之前的 ... 
- 【剑指offer】不分行从上到下打印二叉树,C++实现(层序遍历)
		原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印.例如: 图 不分行从上往下按层打印二叉 ... 
- 【剑指Offer】22、从上往下打印二叉树
		题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路: 本题实际上就是二叉树的层次遍历,深度遍历可以用递归或者栈,而层次遍历很明显应该使用队列.同样我们可以通过 ... 
- 剑指offer_面试题_从上往下打印二叉树
		题目:从上往下打印出二叉树的每一个结点.同一层的结点依照从左到右的顺序打印.比如输入图4.5中的二叉树.则依次打印出8.6.10.5.7.9.11. 8 / \ 6 10 / \ ... 
- C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解
		剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ... 
- C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告
		剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ... 
随机推荐
- vue vue-resource的特点
			1.vue-resource 实现 get, post, jsonp请求. 2.JSONP的是实现原理: 由于浏览器的安全性限制,不允许AJAX访问 协议不同.域名不同.端口不同的数据接口,浏览器认为 ... 
- 记一次非常规方法对接硬件设备(Grason Stadler  GSI 61)
			Grason Stadler GSI 61 电测听设备 (写下设备的名字, 希望别人遇坑可以搜到) 对接说明 设备厂家提供自带的软件,但是没有找到接口说明.我们需要获取设备发送过来的数据. 厂家提供的 ... 
- [POJ1964]City Game (悬线法)
			题意 其实就是BZOJ3039 不过没权限号(粗鄙之语) 同时也是洛谷4147 就是求最大子矩阵然后*3 思路 悬线法 有个博客讲的不错https://blog.csdn.net/u012288458 ... 
- 创建一个git仓库
			1.git init 使用git init命令初始化一个git仓库,git仓库会生成一个.git目录 git init 1.使用指定的目录作为我们的git仓库 git init newrepo 2.初 ... 
- MySQL5.6启用sha256_password插件
			一.背景: 使用MySQL5.6过程中,发现默认的加密插件为mysql_native_password.而sha256_password的安全程度要比mysql_native_password高,尝试 ... 
- 虚拟机下Ubuntu扩容及磁盘重新分区-Gparted
			转自: https://blog.csdn.net/timsley/article/details/50742755 
- CommonsChunkPlugin
			CommonsChunk 插件的作用就是提取代码中的公共代码,然后将公共模块打包到一个独立的文件中,以便在其它的入口和模块中使用,原理就是把多个入口共同的依赖都给定义成一个新入口 多种打包情况: 单一 ... 
- jenkins的sbt插件安装
			在jenkins服务器手动安装sbt curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo mv bintray-sbt-rpm ... 
- ARouter基础使用(一)
			一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由.通信.解耦1.新建一个Android项目 "ARouterDemo"2.添加依赖和配置 andr ... 
- 基础SQL语句用法
			1.插入数据:Insert 2.更新数据:update 每行金额增加100 3.删除数据:delete 4.查询:select 1)精确查询 2)模糊查询:like 模糊查询 % 匹配 3)Betw ... 
