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.
/**
* 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) {
vector<vector<int>> vec;
queue<TreeNode*>que;
if(root == NULL)
return vector<vector<int>>(0);
TreeNode* p = root;
que.push(p);
vector<int>v;
int curCount = 1;
int nextCount = 0;
while(!que.empty()){
int i = 0;
while(i < curCount){
p = que.front();
if(p->left != NULL){
que.push(p->left);
nextCount++;
}
if(p->right != NULL){
que.push(p->right);
nextCount++;
}
que.pop();
i++;
v.push_back(p->val);
}
vec.push_back(v);
v.clear();
curCount = nextCount;
nextCount = 0;
}
return vec;
}
};