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

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;
}
};

最新文章

  1. 【repost】JS错误类型的学习
  2. 搭建php环境哪家强
  3. Linux 客户端访问 NFS报Permission Denied错误
  4. HDU 2860 并查集
  5. JSTL标签库中&lt;c:choose&gt;&lt;/c:choose&gt;不能放JSP页面&lt;!-- --&gt;注释
  6. WPF 数据绑定基础
  7. 终于有人把P2P、P2C、O2O、B2C、B2B、C2C 的区别讲透了
  8. Linux上安装MPEG-1 Layer3(mp3)解码器
  9. 百度劫持js代码
  10. 基本MarkDown语法
  11. 飞思卡尔IMX6处理器的GPIO配置方式
  12. BZOJ2839 集合计数 容斥
  13. SpringMVC运行流程
  14. 自学华为IoT物联网之路
  15. webServlet(&quot;/&quot;) 和 webServlet(&quot;/*&quot;) 的区别
  16. (已解决)Eclipse报错:Could not find XXX.apk. 没有Android项目命名. There is no android project named
  17. 预编译指令#ifdef #endif
  18. COGS 5. P服务点设置
  19. Excel根据单元格内容设置整行颜色
  20. sql server利用cte递归查询

热门文章

  1. mysql数据简单去重
  2. 五一清北学堂培训之Day 3之DP
  3. mysql性能优化之索引优化
  4. python如何获取多个excel单元格的值
  5. Spring3.2.9 + JdbcTemplate 事务
  6. ionic2——环境配置篇
  7. 【Oracle】实现Oracle数据库对象的一键升级
  8. IT从业人员必看的10个论坛(转)
  9. 关于js序列化时间的方法
  10. xsl教程学习笔记