leetcode429
2024-10-21 17:46:07
这道题目是属于树的层次遍历,使用两层的队列非空判断。
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;
}
};
最新文章
- 【repost】JS错误类型的学习
- 搭建php环境哪家强
- Linux 客户端访问 NFS报Permission Denied错误
- HDU 2860 并查集
- JSTL标签库中<;c:choose>;<;/c:choose>;不能放JSP页面<;!-- -->;注释
- WPF 数据绑定基础
- 终于有人把P2P、P2C、O2O、B2C、B2B、C2C 的区别讲透了
- Linux上安装MPEG-1 Layer3(mp3)解码器
- 百度劫持js代码
- 基本MarkDown语法
- 飞思卡尔IMX6处理器的GPIO配置方式
- BZOJ2839 集合计数 容斥
- SpringMVC运行流程
- 自学华为IoT物联网之路
- webServlet(";/";) 和 webServlet(";/*";) 的区别
- (已解决)Eclipse报错:Could not find XXX.apk. 没有Android项目命名. There is no android project named
- 预编译指令#ifdef #endif
- COGS 5. P服务点设置
- Excel根据单元格内容设置整行颜色
- sql server利用cte递归查询