递归
多层vector的初始化
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> ans;
levelOrder(root, 0, ans);
return ans;
}
private:
void levelOrder(Node* root,int d, vector<vector<int>>& ans){
if(root == nullptr) return;
// 多层vector的初始化
while(ans.size()<=d) ans.push_back({});
ans[d].push_back(root->val);
for(auto node: root->children){
levelOrder(node, d+1, ans);
}
}
};
迭代
队列,深度和层数的使用
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> ans;
if(!root) return {};
deque<Node*> q;
q.push_back(root);
int deep = 0;
while(!q.empty()){
int size = q.size();
ans.push_back({});
while(size--){
Node* curNode = q.front();q.pop_front();
ans[deep].push_back(curNode->val);
for(auto n: curNode->children){
if(!n) continue;
q.push_back(n);
}
}
deep++;
}
return ans;
}
};
网友评论