这道题目是属于树的层次遍历,使用两层的队列非空判断。

class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> R;
if (root != NULL)
{
//根进入队列
queue<Node> q;
q.push(Node(root->val, root->children));
vector<int> L;
L.push_back(root->val);
R.push_back(L);
vector<Node> N;
while (!q.empty())
{
L.clear();
N.clear();
//清空队列,放入L
while (!q.empty())
{
Node livenode;
livenode = q.front();//取出队头元素作为当前扩展结点livenode
q.pop(); //队头元素出队 //将当前节点的所有孩子都放入L中
for (auto c : livenode.children)
{
L.push_back(c->val);
N.push_back(Node(c->val, c->children));
}
}
if (L.size() != )
{
R.push_back(L);
} //处理并入队
for (int i = ; i < N.size(); i++)
{
q.push(Node(N[i].val, N[i].children));
}
}
}
return R; }
};

精简版本的代码:

class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> res;
if (!root)
return res;
queue<Node*> q;
q.push(root);
while (!q.empty())
{
vector<int> tmp;
int n = q.size();
for (int i = ; i<n; ++i)
{
Node* t = q.front(); q.pop();
tmp.push_back(t->val);
for (int j = ; j<t->children.size(); ++j)
{
q.push(t->children[j]);
}
}
res.push_back(tmp);
}
return res;
}
};

leetcode429的更多相关文章

  1. (N叉树 BFS) leetcode429. N-ary Tree Level Order Traversal

    Given an n-ary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  2. LeetCode429. N-ary Tree Level Order Traversal

    题目来源:429. N-ary Tree Level Order Traversal https://leetcode.com/problems/n-ary-tree-level-order-trav ...

  3. Leetcode429.N-ary Tree Level Order TraversalN叉树的层序遍历

    给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明: 树的深度不会超过 100 ...

  4. LeetCode 429. N叉树的层序遍历(N-ary Tree Level Order Traversal)

    429. N叉树的层序遍历 429. N-ary Tree Level Order Traversal LeetCode429. N-ary Tree Level Order Traversal 题目 ...

  5. LeetCode通关:连刷三十九道二叉树,刷疯了!

    分门别类刷算法,坚持,进步! 刷题路线参考:https://github.com/youngyangyang04/leetcode-master 大家好,我是拿输出博客来督促自己刷题的老三,这一节我们 ...

随机推荐

  1. Codeforces Round #366 (Div. 2) A , B , C 模拟 , 思路 ,queue

    A. Hulk time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  2. Spark- 共享变量

    Shared Variables Normally, when a function passed to a Spark operation (such as map or reduce) is ex ...

  3. SSIS之数据流任务

    数据流任务主要用于运行数据流以提取.转换.加载源数据.一个包中可以有多个数据流任务,也可以包含零个数据流任务.下面关系图显示含有一个数据流任务的包: 了解数据流任务后,我们就简要的学习一下如何创建数据 ...

  4. pythoncook 随记

    第一章 数据结构与算法 1 赋值多个变量 *2 collections deque 构造固定大小队列,插入删除比list快3 查找最大和最小元素的N个元素 heapq nlargest() nsmal ...

  5. Android中字体颜色的设置

    1.在Android中经常看到设置的颜色为八位的十六进制的颜色值,例如: 1 2 3 public static final class color {     public static final ...

  6. Java_脚本引擎_02_在Idea中进行Nashorn的Debug

    一.前言 本文承接上一节:Java_脚本引擎_01_用法入门 这一节我们来看下怎么在idea中进行Nashorn的Debug ,又或者说怎么在Idea中进行js的Debug 注:idea本身就支持js ...

  7. mysql Replication机制

      从上图可以看见MySQL 复制的基本过程如下: Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容: Master 接收到来自 Sl ...

  8. mac外接键盘修饰键设置

    command 和 control 互换,option保持不变即可,差不多可以做到类似windows快捷键的使用习惯.

  9. PHP中不用第三个变量交换两个变量的值

    相信大家在PHP面试或者学习中经常会遇到这个问题就是“不用第三个变量来交换两个变量的值”,今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个变量的值. 第二种方 ...

  10. Agc019_C Fountain Walk

    传送门 题目大意 给定网格图上起点和终点每个格子是长为$100$米的正方形,你可以沿着线走. 平面上还有若干个关键点,以每个关键点为圆心,$10$为半径画圆,表示不能进入圆内的线,但是可以从圆周上走, ...