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] ]
这道题是层次序遍历二叉树,题目难度为Easy。
层次序遍历二叉树,比较自然会想到用队列把每一层中的节点存下来,按照先进先出FIFO的方式逐个遍历,然后再依次把每个节点的子节点存入队列,这样就完成了层次序遍历。具体代码:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> rst;
queue<TreeNode*> lvl;
if(root) lvl.push(root);
while(!lvl.empty()) {
int sz = lvl.size();
vector<int> curLvl;
for(int i=0; i<sz; ++i) {
TreeNode* n = lvl.front();
curLvl.push_back(n->val);
lvl.pop();
if(n->left) lvl.push(n->left);
if(n->right) lvl.push(n->right);
}
rst.push_back(curLvl);
}
return rst;
}
};