给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树 :
返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
说明:涉及到层次遍历可以用queue(利用队列的先进先出原则)来处理,每处理一层就记录下一层的节点,并删掉当前这层的节点,这样可以保证所有节点都是层次遍历的结果。
/*
// 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>> vecRes;
vector<vector<int>> levelOrder(Node* root) {
if(root==nullptr)
return vecRes;
queue<Node *> q;
q.push(root);
while(!q.empty())
{
int nSize=q.size();
vector<int> vecTmp;
for(int i=0;i<nSize;i++)
{
Node * pNode = q.front();
q.pop();
vecTmp.push_back(pNode->val);
int nChildCnt = pNode->children.size();
for(int j=0;j<nChildCnt;j++)
{
q.push(pNode->children[j]);
}
}
if(!vecTmp.empty())
vecRes.push_back(vecTmp);
}
return vecRes;
}
};