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] ]
Level order traversal, either use queue/vector.
vector<vector<int>> levelOrder(TreeNode* root) {
if(!root) return {}; // if root == NULL, return empty vector
vector<vector<int>> res;
vector<TreeNode*> nodes;
nodes.push_back(root);
while(!nodes.empty()) {
vector<int> tmp;
vector<TreeNode*> nextLevel;
for(int i = 0; i < nodes.size(); ++i) {
tmp.push_back(nodes[i]->val);
if(nodes[i]->left) nextLevel.push_back(nodes[i]->left);
if(nodes[i]->right) nextLevel.push_back(nodes[i]->right);
}
res.push_back(tmp);
tmp.clear();
nodes.swap(nextLevel);
}
return res;
}