Total Accepted: 102932
Total Submissions: 313048
Difficulty: Easy
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
Subscribe to see which companies asked this question
Show Similar Problems
Have you met this question in a real interview?
Yes
No
Discuss Notes
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
ans.clear();
if(root==NULL) return ans;
queue<TreeNode*>q;
while(!q.empty())q.pop();
vector<int>v;
q.push(root);
TreeNode* cur;
while(!q.empty())
{
v.clear();
int len=q.size();
while(len)
{
cur=q.front();
q.pop();
len--;
if(cur==NULL) continue;
v.push_back(cur->val);
q.push(cur->left);
q.push(cur->right);
}
if(v.size()>0) ans.push_back(v);
}
return ans;
}
private:
vector<vector<int>>ans;
};