bfs,记录每一层最后的结点,方法来自数据结构的六度空间
/*
// 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) {
queue<Node*> q;
vector<vector<int>> vec1;
q.push(root);
if(root==NULL){
return vec1;
}
vector<int> vec2;
Node* last=root;
Node* tail=NULL;
while(!q.empty()){
Node* abc=q.front();
q.pop();
vec2.push_back(abc->val);
int len=abc->children.size();
for(int i=0;i<len;i++){
q.push(abc->children[i]);
tail=abc->children[i];
}
if(last==abc){
vec1.push_back(vec2);
vec2.clear();
last=tail;
}
}
return vec1;
}
};