题目:
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
思路:
这个题目也是按层序遍历,只是一个节点可能有多个孩子,节点孩子的形式不再是left,right 而是 vector 来储存所有孩子。依旧是之前按层序遍历的方式,只不过在添加下一行的时候,是添加 当前节点的vector 里面的元素。
代码:
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
queue<Node*>que;
if(root != NULL) que.push(root);
vector<vector<int>> result;
while(!que.empty()){
int size = que.size();
vector<int>v;
for(int i = 0; i < size; i++){
Node* node = que.front();
que.pop();
v.push_back(node->val);
for(int i = 0; i < node->children.size(); i++){
if(node->children[i]) que.push(node->children[i]);
}
}
result.push_back(v);
}
return result;
}
};