这一道题考察树的层次遍历,但是和一般的层次遍历不同的是,其输出结果要用一个二维数组来表示。所以在遍历的时候就要将其层次也记录下来。
这里可以用pair每次将层次和节点一起入队列,也可以另外设置一个记录层次的变量。
由于这一题之前自己做过,所以就看了一下讨论区别人其他的做法。
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
if(root == NULL)
return res;
queue<TreeNode*> q;
q.push(root);
int level_num = 1;
while(!q.empty()){
int new_level_num = 0;
vector<int> level;
for(int i = 0; i < level_num; i ++){
TreeNode* node = q.front();
q.pop();
level.push_back(node->val);
if(node->left){
q.push(node->left);
new_level_num ++;
}
if(node->right){
q.push(node->right);
new_level_num ++;
}
}
res.push_back(level);
level_num = new_level_num;
}
return res;
}
};