class Solution {
//可以不同队列,用一个id指向当前层的第一个node即可,需要同时维护node和val两个列表
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int>> result;
if(!root) return result;
vector<int> head_val = {root->val};
result.push_back(head_val);
vector<vector<TreeNode*>> one_layer_node;
vector<TreeNode*> head = {root};
one_layer_node.push_back(head);
int layer_id = 0;
while(layer_id<one_layer_node.size()){
vector<int> layer_val;
vector<TreeNode*> layer_node;
for(int i=0; i<one_layer_node[layer_id].size(); i++){
if(one_layer_node[layer_id][i]->left){
layer_val.push_back(one_layer_node[layer_id][i]->left->val);
layer_node.push_back(one_layer_node[layer_id][i]->left);
}
if(one_layer_node[layer_id][i]->right){
layer_val.push_back(one_layer_node[layer_id][i]->right->val);
layer_node.push_back(one_layer_node[layer_id][i]->right);
}
}
if(layer_node.size()>0){
one_layer_node.push_back(layer_node);
result.push_back(layer_val);
}
layer_id+=1;
}
return result;
}
};