32-2题:LeetCode102. Binary Tree Level Order Traversal二叉树层次遍历/分行从上到下打印二叉树
题目
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树:[3,9,20,null,null,15,7],3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
考点
思路
代码
newcoder
/*
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) {
//1.定义返回结果
vector<vector<int>> ret;
vector<int> subret;
//2.入口检查
if(!pRoot)
return ret;
//3.定义变量和队列
int toBePrinted=1;//这一级还剩的节点数
int NextLevel=0;//下一级的节点数
queue<TreeNode*> queueTree;
int level=0;//当前的级数
//4.放入根节点
queueTree.push(pRoot);
//5.循环
while(!queueTree.empty())
{
TreeNode* cur=queueTree.front();
subret.push_back(cur->val);
queueTree.pop();
//如果有左子节点
if(cur->left)
{
queueTree.push(cur->left);
NextLevel++;
}
//如果有右子节点
if(cur->right)
{
queueTree.push(cur->right);
NextLevel++;
}
toBePrinted--;
if(!toBePrinted)
{
level++;
toBePrinted=NextLevel;
NextLevel=0;
ret.push_back(subret);
subret.clear();
}
}
return ret;
}
};
leetcode
/**
* 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>> levelOrder(TreeNode* root) {
//1.返回容器
vector<int> subret;
vector<vector<int>> ret;
//2.入口检查
if(!root)
return ret;
//3.定义变量和队列
//该层还剩打印的节点
int remain=1;
//下层的节点数
int nextLevel=0;
//树节点队列
queue<TreeNode*> nodes;
//将根节点入队列
nodes.push(root);
//4.将队列元素放入容器
while(!nodes.empty())
{
//存储当前节点为队列的头部
TreeNode* cur = nodes.front();
//将当前节点塞入subret
subret.push_back(cur->val);
nodes.pop();
remain--;
if(cur->left)
{
nextLevel++;
nodes.push(cur->left);
}
if(cur->right)
{
nextLevel++;
nodes.push(cur->right);
}
//当前级元素全部读完
if(!remain)
{
//将subret pushback进ret
ret.push_back(subret);
//将下一层的剩余元素个数更新
remain=nextLevel;
//下一层的下一层初始化为0
nextLevel=0;
//清空subret
subret.clear();
}
}
//5.返回ret
return ret;
}
};
问题
1.queue
Member functions
Construct and insert element (public member function )
Swap contents (public member function )
Non-member function overloads
Relational operators for queue (function )
Exchange contents of queues (public member function )
queue只有push()。。。vector deque才用push_back()
2.二维vector遍历
#include<iostream>
#include<vector> using namespace std; int main()
{
vector<vector<int>> ves;
vector<int> a{ 1, 2, 3 };
vector<int> b{ 2, 4, 5, 6 }; ves.push_back(a);
ves.push_back(b);
for (auto it = ves.begin(); it != ves.end(); ++it){
for (int i = 0; i < (*it).size(); ++i)
cout << (*it)[i] << " " ;
}
}这题就用subret和ret来定义返回值,注意每层subret要清空。
32-2题:LeetCode102. Binary Tree Level Order Traversal二叉树层次遍历/分行从上到下打印二叉树的更多相关文章
- [刷题] 102 Binary Tree Level Order Traversal
要求 对二叉树进行层序遍历 实现 返回结果为双重向量,对应树的每层元素 队列的每个元素是一个pair对,存树节点和其所在的层信息 1 Definition for a binary tree node ...
- 剑指offer从上往下打印二叉树 、leetcode102. Binary Tree Level Order Traversal(即剑指把二叉树打印成多行、层序打印)、107. Binary Tree Level Order Traversal II 、103. Binary Tree Zigzag Level Order Traversal(剑指之字型打印)
从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode ...
- LeetCode102 Binary Tree Level Order Traversal Java
题目: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ri ...
- (二叉树 BFS) leetcode102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- leetcode102 Binary Tree Level Order Traversal
""" Given a binary tree, return the level order traversal of its nodes' values. (ie, ...
- Binary Tree Level Order Traversal,层序遍历二叉树,每层作为list,最后返回List<list>
问题描述: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ...
- Leetcode102. Binary Tree Level Order Traversal二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其 ...
- (二叉树 BFS) leetcode 107. Binary Tree Level Order Traversal II
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- [Leetcode] Binary tree level order traversal ii二叉树层次遍历
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
随机推荐
- BZOJ 2973 石头游戏 矩乘加速递推
FFFFFFF,看了一上午才看懂,又调了一中午.....我终于明白为何自己如此菜了qwq 这个题加速的思路是:因为每个序列的长度小于6,他们的lcm是60,所以六十次以后就会回到原来的序列. 加速的就 ...
- 如何让nginx支持ThinkPHP框架(重点参考)
公司有一款即将上线的应用服务端是基于ThinkPHP写的,本地测试无异常,上传到外网服务器后无法连接.这可把我和我的小伙伴们吓死了,怎么回事儿,本地测试都是对的呀! 我和我的小伙伴们开始找原因,换了一 ...
- centos6安装bochs
安装包 bochs 2.6.8 平台 centos6 前提依赖 yum groupinstall -y "Server Platform Development" "De ...
- spring boot注入error,Consider defining a bean of type 'xxx' in your configuration问题解决方案
经常出现这问题一定是非spring生态圈的@标签 没被spring引入,如mybatis等 因为在默认情况下只能扫描与控制器在同一个包下以及其子包下的@Component注解,以及能将指定注解的类自动 ...
- linux安装jdk7步骤
linux安装jdk7步骤: 1.首先使用命令查看linux系统版本号: lsb_release -a 2.下载对应的jdk版本,笔者使用的是jdk-7u79-linux-x64.tar.gz: 3. ...
- ElasticSearch2.2.0安装(win7)
ElasticSearch2.2.0必须在jdk1.7上才可以启动起来哦. 一.ElasticSearch2.2.0安装 1.下载ElasticSearch2.2.0安装包 https://downl ...
- 用简单的方法学习ES6
ES6 简要概览 这里是ES6 简要概览.本文大量参考了ES6特性代码仓库,请允许我感谢其作者@Luke Hoban的卓越贡献,也感谢@Axel Rauschmayer所作的[优秀书籍]//explo ...
- vue-pos : 子组件与子组件通讯
子组件与子组件通讯: 例子子组件1 要与子组件2 通讯 步骤1 : 在父组件新建一个 vue 对象 : const eventHub = new Vue() 步骤2 : 子组件1 发起事件 :this ...
- 【web】movie review——静态页面训练、css训练
实现样式要求: image: banner.png: generaloverview.png: background.png: bannerbackground.png: rottenbig.png: ...
- js对jsonArray的操作
上一篇写了关于java中Gson对jsonArray的排序处理,这里介绍js中对jsonArray处理, <!DOCTYPE html> <html> <head> ...