题目链接
题意
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
思路
采用bfs,用m记录队列的大小,这也就是这层的节点个数,然后遍历这m个节点,将这m个节点的值放入答案里,并且将子节点放入队列里。
代码
/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val) {
val = _val;
}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>>ans;
if(!root) return ans;
vector<int>tmp;
queue<Node*>q;
q.push(root);
while(!q.empty()){
int m=q.size();
tmp.clear();
while(m--){
Node* t=q.front();q.pop();
tmp.push_back(t->val);
for(Node* tt:t->children) q.push(tt);
}
ans.push_back(tmp);
}
return ans;
}
};