输入数据很奇怪,明明是node节点,但是给的参考输入是数组,不过无所谓,按节点来做就行。
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
if(root == nullptr)
return {};
vector<vector<int>> res;
queue<Node*> q;
q.push(root);
int len = 1, nextlen;
vector<int> restmp;
while(!q.empty()){
restmp.clear();
nextlen = 0;
for(int i = 0; i < len; i ++){
Node* tmp = q.front();
q.pop();
restmp.push_back(tmp->val);
nextlen += tmp->children.size();
for(int j = 0; j < tmp->children.size(); j ++){
q.push(tmp->children[j]);
}
}
len = nextlen;
res.push_back(restmp);
}
return res;
}
};
就是一个很普通的层序遍历,保留每一层的孩子数和值就可以了。 容易出问题的地方是输入为空的时候,输出只是一个一层的vector,要单独判断。
|