102. 二叉树的层序遍历
AC Code
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<int> level;
vector<vector<int>> res;
queue<TreeNode*> s;
unordered_map<TreeNode*,int> r;
if(root==NULL) return res;
s.push(root);
r[root]=1;
int curLevel=1;
while(!s.empty())
{
root=s.front();
s.pop();
int curNodeLevel=r[root];
if(curLevel==curNodeLevel){
level.push_back(root->val);
}else{
curLevel++;
res.push_back(level);
level.clear();
level.push_back(root->val);
}
if(root->left!=NULL) {
s.push(root->left);
r[root->left]=curNodeLevel+1;
}
if(root->right!=NULL) {
s.push(root->right);
r[root->right]=curNodeLevel+1;
}
}
res.push_back(level);
return res;
}
};