same 429
递归
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
if(!root) return {};
vector<vector<int>> ans;
levelOrder(root, 0, ans);
return ans;
}
private:
void levelOrder(TreeNode* root, int d,
vector<vector<int>>& ans){
if(!root) return;
// vector的初始化
if(ans.size()<=d) ans.push_back({});
ans[d].push_back(root->val);
levelOrder(root->left, d+1, ans);
levelOrder(root->right, d+1, ans);
}
};
迭代
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
if(!root) return {};
// deque
deque<TreeNode*> q;
vector<vector<int>> ans;
q.push_back(root);
int deep = 0;
while(!q.empty()){
int size = q.size();
// init
ans.push_back({});
while(size--) {
TreeNode* n = q.front();q.pop_front();
ans[deep].push_back(n->val);
// none
if(n->left) q.push_back(n->left);
if(n->right) q.push_back(n->right);
}
deep++;
}
return ans;
}
};
网友评论