1. 题目

2. 方法一
2.1. 代码
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> all_layer;
if(root==NULL) return all_layer;
vector<int> layer;
deque<pair<TreeNode*,int>> all_layer_stack;
all_layer_stack.push_back(make_pair(root,0));
int mark=0;
while(!all_layer_stack.empty()){
auto it=all_layer_stack.front();
all_layer_stack.pop_front();
if(it.first->left!=NULL)
all_layer_stack.push_back(make_pair(it.first->left,it.second+1));
if(it.first->right!=NULL)
all_layer_stack.push_back(make_pair(it.first->right,it.second+1));
if(mark!=it.second){
mark++;
all_layer.push_back(layer);
layer.clear();
layer.push_back(it.first->val);
}
else{
layer.push_back(it.first->val);
}
}
all_layer.push_back(layer);
return all_layer;
}
};
2.2. 结果

相关文章: